1

我有这个示例文本,它是从 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

撞到这堵墙头疼。

4

3 回答 3

3

从我正在阅读的内容来看,您的代码已经有效。

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
于 2009-01-07T19:14:37.957 回答
0

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

于 2009-01-07T19:12:21.907 回答
0

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

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

这是一个参考站点

于 2009-01-07T19:15:19.903 回答