正则表达式匹配所有字符实例,除非后跟数字或单独
Posted
技术标签:
【中文标题】正则表达式匹配所有字符实例,除非后跟数字或单独【英文标题】:Regex match all instances of character except when followed by a digit or is by itself 【发布时间】:2019-05-16 23:43:06 【问题描述】:尝试匹配@
的每个实例,除非后面跟digit
或单独在js
中。
@(?!\d)
查找digit
后面的所有内容
1@ @1 1 j@ @j @j1 1j@ j1 1j @@1 @
Regex demo
有什么想法吗?谢谢
【问题讨论】:
@(?!\d)
匹配不带数字的@
s
也许这个@(?!\d|@)
?
我无法弄清楚如何将 @(?!\d) 规则与附加规则结合起来,使其本身也不匹配 @ 的任何实例
你要替换火柴吗?用什么?预期的结果是什么?
试试s.replace(/((?:^|\s)@)(?!\S)|@(?!\d)/g, '$1')
,见regex101.com/r/GEz9kU/1
【参考方案1】:
您想删除任何没有用空格括起来且后面没有数字的@
。最简单的方法是匹配并捕获用空格括起来的@
,并匹配所有其他不带数字的@
,并替换为Group 1 占位符$1
:
s.replace(/((?:^|\s)@)(?!\S)|@(?!\d)/g, '$1')
见regex demo
详情
((?:^|\s)@)(?!\S)
- 第 1 组:字符串开头或空格 ((?:^|\s)
),然后是 @
,后面不跟非空格字符 ((?!\S)
,等于 (?=\s|$)
,空格或字符串结尾)
|
- 或
@(?!\d)
- @
后面没有数字((?!\d)
是负前瞻,如果紧挨当前位置的右侧有数字,则匹配失败)
【讨论】:
以上是关于正则表达式匹配所有字符实例,除非后跟数字或单独的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式:匹配模式后跟一个空格但不匹配2个或更多空格或EOF