与字边界相比,正则表达式 (\B) 中的非字边界是什么?
与字边界相比,正则表达式 (\B) 中的非字边界是什么?
IT技术
javascript
regex
word-boundary
boundary
word-boundaries
2021-01-23 17:51:16
2个回答
单词边界 ( \b
) 是零宽度匹配,可以匹配:
- 在单词字符 (
\w
) 和非单词字符 (\W
) 之间或 - 在单词字符和字符串的开头或结尾之间。
在 Javascript 中,\w
is[A-Za-z0-9_]
和\W
is的定义是其他任何东西。
否定版本的\b
,写\B
,是零宽度匹配,其中上面并不成立。因此它可以匹配:
- 在两个单词字符之间。
- 在两个非单词字符之间。
- 在非单词字符和字符串的开头或结尾之间。
- 空字符串。
例如,如果字符串"Hello, world!"
,然后\b
在以下地方匹配:
H e l l o , w o r l d !
^ ^ ^ ^
并\B
匹配那些\b
不匹配的地方:
H e l l o , w o r l d !
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
的基本目的non-word-boundary
是创建一个正则表达式,它说:
如果我们在 a
word char
(\w
=[a-zA-Z0-9_]
)的开头/结尾,请确保前一个/下一个字符也是 aword char
,例如:
"a\B."
〜"a\w"
:"ab"
,"a4"
,"a_"
, ... 但不是"a "
,"a."
如果我们在 a
non-word char
(\W
=[^a-zA-Z0-9_]
)的开头/结尾,请确保前一个/下一个字符也是 anon-word char
,例如:
"-\B."
〜"-\W"
:"-."
,"- "
,"--"
, ... 但不是"-a"
,"-1"
因为word-boundary
它是相似的,但不是确保相邻字符属于同一类(word char
/ non-word car
),它们需要不同,因此名称word's boundary
.