【发布时间】:2017-09-08 06:40:27
【问题描述】:
我查看了有关该主题的各种帖子,但找不到满意的答案
我需要一个正则表达式来匹配像 #xxx# 这样的字符串 - 这是一个字符串,它的前后可能有不在 a-z A-Z 0-9 中的字符 - 它位于单词边界内 - 前面和后面后跟 ^ 或 $ 或不在 a-z A-Z 0-9 中的字符
我希望将其与不区分大小写和全局匹配的替换一起使用,我正在寻找以下形式的解决方案:
#xxx# 的正则表达式:
'#xxx#'.replace(regexp, 'bla') => 'bla'
'#xxx#,#xXx#)'.replace(regexp, 'bla') => 'bla,bla)'
'(#xXx#, #xxx#)'.replace(regexp, 'bla') => '(bla, bla)'
和:
'a#xxx#'.replace(regexp, 'bla') => 'a#xxx#'
'#xXx#0'.replace(regexp, 'bla') => '#xXx#0'
'hello'.replace(regexp, 'bla') => 'hello'
xxx 的正则表达式:
'xxx'.replace(regexp, 'bla') => 'bla'
'xxx,xXx)'.replace(regexp, 'bla') => 'bla,bla)'
'(xXx, xxx),'.replace(regexp, 'bla') => '(bla, bla)'
和:
'axxx'.replace(regexp, 'bla') => 'axxx'
'xXx0'.replace(regexp, 'bla') => 'xXx0'
'hello'.replace(regexp, 'bla') => 'hello'
等
我尝试了各种解决方案(即(?!\w)#xxx#(?!\w)),但无法正常工作。
基本上我正在寻找当字符串周围有非 alnum 字符时工作的 \b。
有什么帮助吗?
【问题讨论】:
-
能否给出一些匹配和不匹配的测试用例?
-
编辑了我的问题
-
是否有一个列表列出了哪些字符可能被视为“单词”的一部分?您唯一的例子是
'#'和','是这个词的一部分,但括号不是。我觉得您没有将逗号视为单词边界有点奇怪,但无论如何...也许您可以在[^ ().-;:)]+[a-z][^ ().-;:)]+上匹配,即,将您认为是单词边界的所有字符列为 的字符不匹配。 -
搜索字符串中a-zA-Z0-9之外的任何字符都是边界字符,但的所有字符我们正在寻找的字符串不管它们是什么都被使用
标签: javascript regex