正则表达式环视
Regex lookaround
当一切都很简单时,我们有一个正则表达式 /[^A-Za-z0-9]/
一旦匹配,我们将替换为下划线
American Football # American_Football
Mini Golf # Mini_Golf
但是,我们不希望它匹配
AR/ VR
我原以为否定回顾会起作用,但唉......为什么否定回顾不返回并确保 \/\s
不匹配?
[^A-Za-z0-9](?<!\/\s)
谢谢
[^A-Za-z0-9](?<!\/\s)
匹配 AR/ VR
中的 /
因为它不是以 /
开头的空格,参见 this demo:
您似乎只想匹配字母数字字符之间的非字母数字字符:
/(?<=[A-Za-z0-9])\W(?=[A-Za-z0-9])/
参见 this regex demo。
详情
(?<=[A-Za-z0-9])
- 就在前面,必须有一个字母数字字符
\W
- 非单词字符(非字母、非下划线)字符
(?=[A-Za-z0-9])
- 紧接着,必须有一个字母数字字符。
当一切都很简单时,我们有一个正则表达式 /[^A-Za-z0-9]/ 一旦匹配,我们将替换为下划线
American Football # American_Football
Mini Golf # Mini_Golf
但是,我们不希望它匹配
AR/ VR
我原以为否定回顾会起作用,但唉......为什么否定回顾不返回并确保 \/\s
不匹配?
[^A-Za-z0-9](?<!\/\s)
谢谢
[^A-Za-z0-9](?<!\/\s)
匹配 AR/ VR
中的 /
因为它不是以 /
开头的空格,参见 this demo:
您似乎只想匹配字母数字字符之间的非字母数字字符:
/(?<=[A-Za-z0-9])\W(?=[A-Za-z0-9])/
参见 this regex demo。
详情
(?<=[A-Za-z0-9])
- 就在前面,必须有一个字母数字字符\W
- 非单词字符(非字母、非下划线)字符(?=[A-Za-z0-9])
- 紧接着,必须有一个字母数字字符。