gpt4 book ai didi

Javascript 正则表达式 : Word boundaries and punctuation marks

转载 作者:行者123 更新时间:2023-11-29 18:29:43 26 4
gpt4 key购买 nike

我正在尝试使用 javascript 的 RegExp 来匹配完整的单词,但是当这些单词以标点符号作为边界时它不起作用。 IE。

(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 中有特殊含义,应该转义。

好的,我明白了,您正试图逃避它...但并非所有浏览器都内置了此方法 RegExp.escape 并且看起来,这就是问题所在。原因

(new RegExp("\\b"+"why not\?"+"\\b", 'i')).test("why not? you foolish")

按预期工作(返回 true)。

这是我使用的代码:

if (typeof RegExp.escape == "undefined") {
RegExp.escape = function(str) {
return str.replace(/([()\[\]\\\/+*?.-])/g, "\\$1");
}
}

关于Javascript 正则表达式 : Word boundaries and punctuation marks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9590588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com