不以几个给定单词开头的字符串的正则表达式模式

标签 regex

例如 :

String s= "Hello every one !! ";

现在我想检查字符串是否不以
Hello 
Hi
Hey

然后返回真?

最佳答案

您可以使用 Negative Lookahead在这样的正则表达式中:

这是针对 JavaScript 的

/^(?!Hello|Hi|Hey).+/gm

将匹配下面的 4 和 8 行
  • 大家好 !!
  • 嗨我的 key 茶店
  • 嘿我的 key 茶店
  • 也许是我的关键茶馆
  • 大家好 !!
  • 嗨我的 key 茶店
  • 嘿我的 key 茶店
  • 也许我的asdf key 茶店

  • ^ - 起跑线

    (?!) - 从表达式中的当前位置开始,确保给定的模式不会匹配。不消耗字符。
    在你的情况下,“你好”或“嗨”或“嘿”表达 您好|您好|您好这意味着:逐字匹配字符 Hello(区分大小写)字面上匹配字符 Hi(区分大小写)逐字匹配字符 Hey(区分大小写)

    .+ - 匹配一次到无限次之间的任何字符(换行符除外),尽可能多次,例如所有的

    修饰符:多行。导致 ^ 和 $ 匹配每行的开头/结尾(不仅是字符串的开头/结尾)( 在匹配字符串的情况下不需要 )

    修饰符:全局。所有匹配(在第一次匹配时不返回)( 在匹配字符串的情况下也不需要 )

    附言您可以使用更短的版本
    /^(?!H(ello|i|ey)).+/gm
    

    P.P.S.这些示例也适用于 Ruby、Python 和 PHP

    关于不以几个给定单词开头的字符串的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32637151/

    相关文章:

    JavaScript 正则表达式替换在代码中不匹配,但在编辑器中匹配

    python - 基于规则的 ngram 映射

    c++ - 如何为 Windows 构建 Google RE2?

    jquery - 替换类中字符串中的文本+通配符数字

    regex - 如何将模式与可选的引号匹配?

    php - 使用正则表达式检测非空字符串?

    regex - HTTPS 强制重定向在 Wordpress 中不起作用

    javascript - 使用前瞻和后视正则表达式时出错

    regex - 如何替换 Swift 中的第一次出现?

    php - 为每个相同的单词添加破折号(正则表达式、php)