【发布时间】:2014-09-29 09:04:53
【问题描述】:
我正在尝试使用 javascript 中的正则表达式匹配字符串中的单词。
假设字符串是“我有 C++ 作为一项技能”。我现在想计算“c++”子字符串的出现次数。如果字符串是“我有 c++test”或类似的,我不想匹配。所以我需要检查单词边界并包含一些特殊字符,例如 + 和 #。
我有以下代码:
var str = "I have c++ as a skill, but I do not have c++test as a skill";
var regex = new RegExp("(?<![\\w+#])c\\+\\+(?![\\w+#])", "g");
count = (str.match(regex) || []).length;
console.log(count);
预期结果是“1”。
这在 var regex... 行失败,错误为:
SyntaxError: Invalid regular expression: /(?<![\w+#])c\+\+(?![\w+#])/: Invalid group
我看不到需要更改哪些内容才能使我的边界正常工作,有人可以帮助我吗?
【问题讨论】:
-
你可以使用正则表达式,它们更容易阅读,因为它们不需要双重转义:
/(?<![\w+#])c\+\+(?![\w+#])/ -
在 JS 中:
Lookbehind is not supported at all. Lookahead is fully supported. -
如果我是你,我会使用:\sc\\+\\+\s
标签: javascript regex