正则表达式以不同的条件开始和结束

时间:2017-10-11 14:54:58

标签: regex

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

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

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

应该匹配的示例:

  • test_regex_9
  • ë
  • test9

不应匹配的示例:

  • 测试_
  • _test
  • 9test

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

结尾

2 个答案:

答案 0 :(得分:2)

您可以使用可选组:

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

详细

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

答案 1 :(得分:1)

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

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