2016-01-01 90 views
1

我有下面的java脚本来提取字符串中出现“=”后的单词。正则表达式解释

例如:

string strOld="ActionDate=11/20/2014 12:00:00 AM "; 

strOld.substr(strOld.indexOf(type)).substr(type.length +1, strOld.substr(strOld.indexOf(type)).substr(type.length).indexOf(" ")) 

这将提取“2014年11月20日”,从上述string.Since这是被“=”后存在的单词。

如何使用正则表达式重写?

我想要在同一个字符串变量中重新出现“=”的情况下得到逗号分隔的日期。

在有多个标志的情况下:

输入:字符串strOld = “ActionDate = 11/20/2014年12:00:00 AM SuspensionCode = 123”; 输出: “11/20/2014,123”

回答

3

这是一个JavaScript版本

https://fiddle.jshell.net/nsqbuy11/1/

也是刚刚才知道jshell,似乎一个很好的工具

var myregexp = /=(\S*)/g; 
var match = myregexp.exec("FirstEvictionActionDate=11/20/2014 12:00:00 AM SuspensionCode=123"); 
while (match != null) { 
    //for (var i = 0; i < match.length; i++) { 
    alert((match[1])); 
    //} 
    match = myregexp.exec("FirstEvictionActionDate=11/20/2014 12:00:00 AM SuspensionCode=123"); 
} 
+0

你能写完整的代码吗? – SmartestVEGA

+0

@buckley这个'=(\ S +)'就够了。而且你还必须加上'g'修饰符。 –

+0

单件作品,但多个我把以下表达,但它不工作 – SmartestVEGA

1

首先拆分字符串转换为数组,然后从数组中的第二项提取日期,即日期时间字符串。

var strOld = "ActionDate=11/20/2014 12:00:00 AM"; 
var arr = strOld.split('='); 
var regex = /([\d]{2}\/[\d]{2}\/[\d]{4})\s([\d]{2}:[\d]{2}:[\d]{2}\s(AM|PM))/; 
var result; 
arr[1].replace(regex, function(date, time) { 
    result = date; 
    console.log(result); 
}); 
1

如果你不关心这个词来平等的左侧,那么你可以使用这个表达式来分割它:

'ActionDate=11/20/2014 12:00:00 AM SuspensionCode=123'.split(/\w+=/); 
// result: ["", "11/20/2014 12:00:00 AM ", "123"] 

,或者如果你想将它们包括在阵列中,试试这个:

'ActionDate=11/20/2014 12:00:00 AM SuspensionCode=123'.split(/(\b\w+)=/) 
// result ["", "ActionDate", "11/20/2014 12:00:00 AM ", "SuspensionCode", "123"]