Css class 单词匹配 preg_match

Css class Word match on preg_match

我有以下正则表达式:

\w*(\.([a-zA-Z0-9]+[-_]+)?careerfy([-_]+[a-zA-Z0-9]+)?)\w*

以上内容应与 css 类 匹配,其中包含 careerfy 及其变体:

  1. 匹配 .crfy-careerfy
  2. 匹配 .careerfy
  3. 匹配.careerfy-post
  4. 匹配.crfy-careerfyds-add-space

匹配 4 不是预期的,也不是必需的!

https://regex101.com/r/ncd4V9/3

您需要在 careerfy 单词后自定义单词边界:

\w*(\.([a-zA-Z0-9]+[-_]+)?careerfy(?![^\W_])([-_]+[a-zA-Z0-9]+)?)\w*
                                  ^^^^^^^^^^ 

参见regex demo

如果(?![^\W_])后跟字母或数字,则(?![^\W_])不会匹配careerfy

参见 regex graph