Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
regex以不同的条件开始和结束_Regex - Fatal编程技术网

regex以不同的条件开始和结束

regex以不同的条件开始和结束,regex,Regex,以下规则适用于我需要测试的字符串: 必须仅以字母开头(1个或多个) 可以包含字母、数字和/或下划线(0或更多) 必须以字母或数字结尾(1或更多) ^[a-z]+[\w]*[a-z0-9]$/gi是我得到的最接近的字符串,但它与包含单个字母的字符串不匹配 应匹配的示例: 测试规则9 e 测试9 不应匹配的示例: 试验_ _试验 9测试 ^[a-z]+[\w]*[a-z0-9]*$/gi还允许字符串以结尾。您可以使用可选组: /^[a-z]+(?:\w*[a-z0-9])?$/i 细节

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

  • 必须仅以字母开头(1个或多个)
  • 可以包含字母、数字和/或下划线(0或更多)
  • 必须以字母或数字结尾(1或更多)
^[a-z]+[\w]*[a-z0-9]$/gi
是我得到的最接近的字符串,但它与包含单个字母的字符串不匹配

应匹配的示例:

  • 测试规则9
  • e
  • 测试9
不应匹配的示例:

  • 试验_
  • _试验
  • 9测试

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

结尾。您可以使用可选组:

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

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

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

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

很好用!谢谢我必须说,@Wiktor Stribiżew模式会稍微快一点