【问题标题】:regex to start and end with different conditions正则表达式以不同的条件开始和结束
【发布时间】:2017-10-11 14:54:57
【问题描述】:

以下规则适用于我需要测试的字符串:

  • 只能以字母开头(1 个或多个)
  • 可以包含字母、数字和/或下划线 (_)(0 个或多个)
  • 必须以字母或数字(1 个或多个)结尾

^[a-z]+[\w]*[a-z0-9]$/gi 是我得到的最接近的,但它与包含单个字母的字符串不匹配。

应匹配的示例:

  • test_regex_9
  • e
  • 测试9

不应匹配的示例:

  • 测试_
  • _test
  • 9test

^[a-z]+[\w]*[a-z0-9]*$/gi 还允许字符串以_结尾

【问题讨论】:

    标签: regex


    【解决方案1】:

    您可以使用可选组:

    /^[a-z]+(?:\w*[a-z0-9])?$/i
    

    详情

    • ^ - 字符串开头
    • [a-z]+ - 一个或多个字母
    • (?:\w*[a-z0-9])? - 出现一次或零次
      • \w* - 0 个或多个单词字符
      • [a-z0-9] - 一个字母数字字符
    • $ - 字符串结束。

    【讨论】:

      【解决方案2】:

      正则表达式交替组的另一种方式:

      ^([a-z]+[\w]*[a-z0-9]|[a-z]+)$
      

      【讨论】:

      • 完美运行!谢谢!
      • 我必须说,@Wiktor Stribiżew 模式会稍微快一些
      猜你喜欢
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 2021-08-05
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      相关资源
      最近更新 更多