我试图使用JavaScript的RegExp来匹配完整的单词,但它不起作用,当这些单词有标点符号作为边界。即Javascript RegExp:单词边界和标点符号
(new RegExp("\\b"+RegExp.escape("why not")+"\\b", 'i')).test("why not you foolish")
正确匹配。并且:
(new RegExp("\\b"+RegExp.escape("why not")+"\\b", 'i')).test("why nots you foolish")
正确地不匹配。问题是当这个词以“?”结尾时,这是行不通的:
(new RegExp("\\b"+RegExp.escape("why not?")+"\\b", 'i')).test("why not? you foolish")
有什么建议吗?
注:我使用这个功能来逃避: “?”
# Escape characters for regexp
RegExp.escape = (text) ->
text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
是RegExp.escape东西,你已经在你自己定义的?因为RegExp没有方法'escape':[mdn](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp#Methods)如果是这样,你能告诉我们源代码,我们可以帮助你在那里发现问题。 – wave 2012-03-06 19:50:47
对不起,我忘了包括,我现在更新了上面的代码。 – LMH 2012-03-06 20:11:48
BTW:万无一失,但过多RegExp.escape:'替换(/ \ W/g,函数(m){var c = m.charCodeAt(0),r = c.toString(16); for(; c <4096 ; c << = 4)r =“0”+ r; return“\\ u”+ r;});' – kirilloid 2012-03-06 20:32:15