1

我正在使用的正则表达式返回太多文本。该表达式应该从文本中删除名称和日期。

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

其他烦人的问题:

  1. 我无法在正则表达式中模拟这个问题。http://regexpal.com/

2.

alert(sDate[0]); 

返回:

(26 JAN 2011) - ILewis

oTextbox.value = sDate[0];

导致一个空的文本框。令人沮丧。

我究竟做错了什么?

4

2 回答 2

1

您正在警告sDate认为它是一个字符串,而实际上它是一个数组。逗号不在匹配项中,它是一个分隔符。

第一个元素是:

(26 JAN 2011) - ILewis

第二个是:

JAN

这是因为您将月份位包裹在括号中。它是一个捕获组,exec并将捕获组作为结果的一部分返回。

你要

sDate[0]

如果您从中得到一个空文本框,则在正则表达式之外还有其他一些问题。

您的正则表达式中也有一些不正确的转义\。因为它在那里,它在 IE 中根本不起作用。\\无论您有什么地方,您都需要\

编辑:这个小提琴显示了实际的代码。有用。

http://jsfiddle.net/5azr9/

于 2012-10-04T21:11:07.247 回答
0

也许您可以使用更简单(更宽容)的正则表达式,这完全取决于您的需求,但试试这个:

/\(\d{2}.\w{3}.\d{4}\)[\s\-.,]{0,3}\b\w+\b/
于 2012-10-04T21:08:41.257 回答