2024-04-28 15:34:15 发布
网友
我有一个正则表达式来转义搜索字符串中的所有特殊字符。这工作很好,但我似乎无法让它与文字界限。例如,用干草堆
add +
或者
add (+)
还有针
+
正则表达式/\+/gi与“+”匹配。但是正则表达式/\b\+/gi没有。关于如何使其工作的任何想法?
/\+/gi
/\b\+/gi
使用
add (plus)
作为haystack和/\bplus/gi作为regex,它匹配得很好。我只是不明白为什么逃逸的角色有问题。
/\bplus/gi
尝试将其更改为:
/\b\s?+/gi
编辑:
尽可能扩展这个概念。如果要在任何单词边界后使用第一个+号:
/\b[^+]*+/gi
边界是非常有条件的断言;它们锚定的东西取决于它们接触的东西。请参阅this answer以获得详细的解释,以及您还可以做些什么来处理它。
\b是一个零宽度断言:它不使用任何字符,只是断言某个条件在给定位置保持不变。单词边界断言位置前面有一个单词字符而后面没有一个,或者后面跟着一个单词字符而前面没有一个。(单词字符是字母、数字或下划线。)在字符串中:
\b
…开头有一个单词边界,因为a前面没有单词字符,第二个d后面有一个,因为后面没有单词字符。regex(/\b\+/)中的\b试图在空间和+之间进行匹配,这是不起作用的,因为这两个字符都不是单词字符。
a
d
/\b\+/
尝试将其更改为:
编辑:
尽可能扩展这个概念。如果要在任何单词边界后使用第一个+号:
边界是非常有条件的断言;它们锚定的东西取决于它们接触的东西。请参阅this answer以获得详细的解释,以及您还可以做些什么来处理它。
\b
是一个零宽度断言:它不使用任何字符,只是断言某个条件在给定位置保持不变。单词边界断言位置前面有一个单词字符而后面没有一个,或者后面跟着一个单词字符而前面没有一个。(单词字符是字母、数字或下划线。)在字符串中:…开头有一个单词边界,因为
a
前面没有单词字符,第二个d
后面有一个,因为后面没有单词字符。regex(/\b\+/
)中的\b
试图在空间和+
之间进行匹配,这是不起作用的,因为这两个字符都不是单词字符。相关问题 更多 >
编程相关推荐