Я пытаюсь использовать regExp javascript для соответствия полным словам, но это не работает, когда эти слова имеют знаки препинания в качестве границы. То естьJavascript RegExp: границы Word и знаки препинания
(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
Извините, но я забыл включить это, но обновил код выше с этим сейчас. – LMH
BTW: надежный, но чрезмерный RegExp.escape: 'replace (/ \ W/g, function (m) {var c = m.charCodeAt (0), r = c.toString (16); for (; c <4096 ; c << = 4) r = "0" + r; return "\\ u" + r;}); ' – kirilloid