我正在使用的正则表达式返回太多文本。表达式应该从文本中删除名称和日期。
var sCurrentText = "(26 JAN 2011) - ILewis Provided excellent translation.";
var sRegxDate = "\([0-9]{2}[\\\.\/\-, ](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[\\\.\/\-, ][0-9]{4}\)[, \-]{0,3}[A-z]+ ?\-?\:? ?";
var DatePattern = new RegExp(sRegxDate, "i");
var sDate = DatePattern.exec(sCurrentText);
alert(sDate);
我期待:
(26 JAN 2011) - ILewis
但弹出窗口说:
(26 JAN 2011) - ILewis,JAN
其他恼人的问题:
2
alert(sDate[0]);
返回:
(26 JAN 2011) - ILewis
但是
oTextbox.value = sDate[0];
会产生一个空文本框。令人沮丧。
我做错了什么?
答案 0 :(得分:1)
你警告sDate
认为它是一个字符串,而实际上它是一个数组。逗号不在匹配中,它是一个分隔符。
第一个元素是:
(26 JAN 2011) - ILewis
第二个是:
JAN
这是因为您将月份括在括号中。它是一个捕获组,exec
返回捕获组作为结果的一部分。
你想要
sDate[0]
如果你从这里得到一个空文本框,那么在正则表达式之外还有一些其他问题。
您的正则表达式中还有一些未正确转义的\
。因为它存在,它在IE中根本不起作用。只要您有\\
\
编辑:这个小提琴显示了行动中的代码。它有效。
答案 1 :(得分:0)
也许你可以使用更简单(更宽容)的正则表达式,这一切都取决于你的需求,但试试这个:
/\(\d{2}.\w{3}.\d{4}\)[\s\-.,]{0,3}\b\w+\b/