2

I have this in my JavaScript,

alert(words.match(\b.(\w*)\b));

, where words is a string previously defined. But, the regex (\b.(\w*)\b) is producing a console error Uncaught SyntaxError: Unexpected token ILLEGAL. I think it's the backslashes, but no matter what I do, I still get the problem. I have thoroughly researched this problem on Stackoverflow and Google, but none of the results either works or meets my situation.

Here is the regex I am using: http://regexr.com?36u4v. Any held would be greatly appreciated.

4

2 回答 2

4

这归结为“是\b.(\w*)\b RegExp吗?” 嗯,有点,但你还没有告诉翻译。它不是JavaScript中的RegExp 文字。您需要将其作为字符串传递给构造函数,或者使用文字表示法,以开头和结尾RegExp/

/\b.(\w*)\b/

至于你的错误,解释器到达第\一个并且不知道这意味着什么,所以它告诉你令牌(\)是意外的,所以你使用它的地方是“非法的”。


对于多个匹配项,您需要设置global 标志,例如,多次查找“foo”

/foo/g

这个正则表达式是否适用于选择所有单词,不包括空格和标点符号(下划线和连字符除外)

\w是class的简写[A-Za-z0-9_],因此您目前不匹配连字符。您.还将匹配大多数字符,包括空格和标点符号。*您可以将(零个或多个)交换为+(一个或多个),这样您就不需要.. 因此,以下可能更适合您的需求

/\b([A-Za-z0-9_-]+)\b/g
于 2013-10-27T01:37:33.097 回答
1

您忘记将正则表达式文字放入斜杠:

alert(words.match(/\b.(\w*)\b/));
于 2013-10-27T01:38:10.013 回答