gpt4 book ai didi

javascript - 非专辑字符中包含的字符串的正则表达式单词边界

转载 作者:行者123 更新时间:2023-12-03 03:31:46 25 4
gpt4 key购买 nike

我查看了有关该主题的各种帖子,但找不到满意的答案

我需要一个正则表达式来匹配像 #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 。

有什么帮助吗?

最佳答案

不确定我是否理解正确,但将模式限制为

preceded and followed by ^ or $ or a char that is not in a-z A-Z 0-9

您可以使用/(^|[^0-9a-zA-Z])模式在此处([^0-9a-zA-Z]|$)/:

  • (^|[^0-9a-zA-Z]) 将匹配字符串的开头或不在 0-9a-zA-Z 中的字符;
  • 类似 ([^0-9a-zA-Z]|$) 匹配字符串结尾或不在 0-9a-zA-Z 中的字符;

测试用例:

1) 对于#xxx#:

var samples = ['#xxx#',
'#xxx#)',
'(#xxx#,',
'a#xxx#',
'#xxx#0',
'hello']

console.log(
samples.map(s => s.replace(/(^|[^0-9a-zA-Z])#xxx#([^0-9a-zA-Z]|$)/, '$1bla$2'))
)

2) 对于xxx:

var samples = ['xxx',
'xxx)',
'(xxx,',
'axxx',
'xxx0',
'hello']

console.log(
samples.map(s => s.replace(/(^|[^0-9a-zA-Z])xxx([^0-9a-zA-Z]|$)/, '$1bla$2'))
)

关于javascript - 非专辑字符中包含的字符串的正则表达式单词边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46065278/

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