我的 JavaScript 中有这个,
alert(words.match(\b.(\w*)\b));
,其中 words
是之前定义的字符串。但是,正则表达式 (\b.(\w*)\b
) 生成控制台错误 Uncaught SyntaxError: Unexpected token ILLEGAL
。我认为这是反斜杠,但无论我做什么,我仍然遇到问题。我在 Stackoverflow 和 Google 上彻底研究了这个问题,但没有一个结果有效或符合我的情况。
这是我正在使用的正则表达式:http://regexr.com?36u4v 。如有任何保留,我们将不胜感激。
最佳答案
这归结为“是 \b.(\w*)\b
RegExp 吗?”嗯,有点像,但你还没有告诉口译员这一点。它不是 JavaScript 中的 RegExp 文字。您需要将其作为字符串传递到 RegExp
构造函数,或使用文字表示法,以 /
/\b.(\w*)\b/
至于你的错误,解释器首先到达 \
并且不知道这意味着什么,所以它告诉你 token (\
) 是意外的,所以在您使用它的地方是“非法的”。
对于多个匹配,您需要设置 g
lobal 标志,例如多次查找“foo”
/foo/g
does this regex work well for selecting all words, excluding spaces and punctuation (other than underscores and hyphens)
\w
是 shorthand对于类 [A-Za-z0-9_]
,因此您目前没有匹配连字符。您的 .
还将匹配大多数字符,包括空格和标点符号。您可以将 *
(零个或多个)替换为 +
(一个或多个),这样就不需要 .
。因此以下内容可能更适合您的需求
/\b([A-Za-z0-9_-]+)\b/g
关于JavaScript 正则表达式产生未捕获的语法错误 : Unexpected token ILLEGAL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613757/