Javascript 匹配“:”)&引用;笑脸后面跟着单词边界
我正在尝试匹配smiley,后跟单词边界Javascript 匹配“:”)&引用;笑脸后面跟着单词边界,javascript,regex,Javascript,Regex,我正在尝试匹配smiley,后跟单词边界\b 假设我想匹配:p和:),然后是\b /(:p)\b/工作正常,但为什么/(:\)\b/的行为正好相反?此处不能使用a,因为)是非单词字符 简单地说:\b允许您使用 格式为\bword\b的正则表达式。单词字符是一种符号 可以用来构成单词的字符。所有不是 单词字符是非单词字符 使用(:\)匹配:)并在第一个捕获组中捕获它 使用/(:\)(?![a-z0-9\])/i避免将任何:)与笑脸后面的字母匹配。它相当于(:\)\B \B是\B的否定版本\B在\B
\b
假设我想匹配:p
和:)
,然后是\b
/(:p)\b/
工作正常,但为什么/(:\)\b/
的行为正好相反?此处不能使用a,因为)
是非单词字符
简单地说:\b
允许您使用
格式为\bword\b
的正则表达式。单词字符是一种符号
可以用来构成单词的字符。所有不是
单词字符是非单词字符
使用(:\)
匹配:)
并在第一个捕获组中捕获它
使用/(:\)(?![a-z0-9\])/i
避免将任何:)
与笑脸后面的字母匹配。它相当于(:\)\B
\B
是\B
的否定版本<代码>\B在\B
没有。实际上,\B
在两个单词之间的任何位置都匹配
字符以及两个非单词字符之间的任何位置
参见和。对斯特里比雪夫答案的补充。。您可以使用
(:\)\B
关于何时使用内容的示例:
\b
:string=那个人就是蝙蝠侠。
regex=\bman\b
只匹配人
,而不匹配蝙蝠侠中的人
,因为tm
之间的位置不是单词边界(它是一个单词)
\B
:string=我是蝙蝠侠,他是超人。
regex=\B-\B
匹配-
中的-
而\B-/code>匹配蝙蝠侠中的-
,因为t-
和-m
之间的位置是单词边界。。而(空格)
,(空格)
不是
<强>注:如果您认为“代码>>b>代码>或<代码> \b/c>作为两个字符之间的位置,并且如果从字符到字符的转换是<代码> Word到Word 或<代码> Word到非Word
您需要理解什么是Word边界,那么很容易理解。它是\w
字符类中的字符与\w
中的字符之间的限制,或者字符串的限制(开头或结尾)p
是一个单词,)
不是。你想匹配:)
或:)%
之类的吗?你能告诉我们语言是什么吗,我将编辑我的问题。/(:\)/
匹配::)p“,但我不希望这样。那么我该怎么做呢?那么,使用/(:\)(?![a-z])/I
来避免将任何:)
与后面的字母匹配。实际上/(:\)\B/
正以我想要的方式工作,你如何解释这一点?\B
-断言\B
不匹配的位置这是真的,因为\B
匹配非单词边界。