帮助 javascript 中的正则表达式

Posted

技术标签:

【中文标题】帮助 javascript 中的正则表达式【英文标题】:Help with regex in javascript 【发布时间】:2010-09-30 02:44:25 【问题描述】:

我有这个示例文本,它是从 html 元素上的类名中检索到的:

rich-message err-test1 erroractive
rich-message err-test2 erroractive
rich-message erroractive err-test1
err-test2 rich-message erroractive

我正在尝试匹配每个示例中的“test1”/“test2”数据。我目前正在使用以下正则表达式,它匹配“err-test1”类型的单词。我不知道如何将其限制为连字符 (-) 之后的数据。

/err-(\S*)/ig

撞墙头疼。

【问题讨论】:

【参考方案1】:

您可以尝试 'err-([^ \n\r]*)' - 但您确定问题出在正则表达式上吗?您是否使用了整个结果,而不仅仅是第一次捕获?

【讨论】:

我唯一需要的是“err-”之后的文本。我想在单个正则表达式中干净地进行匹配,而不是匹配整个单词然后使用额外的方法剥离“err-”。当然,它现在可以节省时间,但仍然不能解决问题。【参考方案2】:

从我正在阅读的内容来看,您的代码已经可以工作了。

Regex.exec() 成功时返回结果数组。

数组中的第一个元素(索引 0)返回整个字符串,之后所有() 封闭的元素都被推入这个数组。

var string = 'rich-message err-test1 erroractive';
var regex = new RegExp('err-(\S*)', 'ig');
var result = regex.exec(string);

alert(result[0]) --> returns err-test1
alert(result[1]) --> returns test1

【讨论】:

该死的,我是个白痴。我一直在使用 .match() 而不是 .exec()。谢谢!【参考方案3】:

- 后面的东西应该在结果数组中。第一项是所有匹配的文本(例如“err-test1”),下一项是捕获括号中的匹配项(例如“test1”)。

myregex = /err-(\S*)/ig;
mymatch = myregex.exec("data with matches in it");
testnum = mymatch[1];

这是reference site。

【讨论】:

以上是关于帮助 javascript 中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中的正则表达式

正则表达式 丨JavaScript 高级

JavaScript中的正则表达式

JavaScript中的正则表达式(终结篇)

JavaScript正则表达式的学习

javascript中的正则表达式学习