Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
如何在regexp中的特定位置验证特殊字符_Regex - Fatal编程技术网

如何在regexp中的特定位置验证特殊字符

如何在regexp中的特定位置验证特殊字符,regex,Regex,我已经写了Regexp@“^([a-zA-Z]+[a-zA-Z0-9]*)$”它允许所有字符和数字,除了特殊字符和第一个字符不能是数字。现在我必须允许'-'字符位于除最后一个和第一个字符之外的任何位置。如何修改它。您可以在第二个字符类中添加一个-,并添加(?!,以确保字符串不以-结尾 解释 ^在行首断言位置 (?!.*-$)负前瞻,断言字符串不以- (捕获组 [a-zA-Z]+匹配字符类一次或多次 [a-zA-Z0-9-]*将字符类与-匹配零次或多次 )关闭捕获组 $在行尾断言位置 注

我已经写了Regexp
@“^([a-zA-Z]+[a-zA-Z0-9]*)$”
它允许所有字符和数字,除了特殊字符和第一个字符不能是数字。现在我必须允许
'-'
字符位于除最后一个和第一个字符之外的任何位置。如何修改它。

您可以在第二个字符类中添加一个
-
,并添加
(?!
,以确保字符串不以
-
结尾

解释

  • ^
    在行首断言位置
  • (?!.*-$)
    负前瞻,断言字符串不以
    -
  • 捕获组
    • [a-zA-Z]+
      匹配字符类一次或多次
    • [a-zA-Z0-9-]*
      将字符类与
      -
      匹配零次或多次
  • 关闭捕获组
  • $
    在行尾断言位置
注意

您的正则表达式位于捕获组内。如果您不使用该组,则可以省略括号:

您可以向第二个字符类添加
-
,并添加
(?!
,以确保字符串不以
-
结尾

解释

  • ^
    在行首断言位置
  • (?!.*-$)
    负前瞻,断言字符串不以
    -
  • 捕获组
    • [a-zA-Z]+
      匹配字符类一次或多次
    • [a-zA-Z0-9-]*
      将字符类与
      -
      匹配零次或多次
  • 关闭捕获组
  • $
    在行尾断言位置
注意

您的正则表达式位于捕获组内。如果您不使用该组,则可以省略括号:

您可以使用以下功能:

@"^([a-zA-Z ]+[a-zA-Z0-9\- ]*[a-zA-Z0-9 ]+)$"
  • 第一组仅允许字母(至少一个)
  • 第二组允许任何字符(-include)
  • 最后一组仅允许字母和数字(至少一到两个) 排除任何其他字符)
您可以测试它

您可以使用:

@"^([a-zA-Z ]+[a-zA-Z0-9\- ]*[a-zA-Z0-9 ]+)$"
  • 第一组仅允许字母(至少一个)
  • 第二组允许任何字符(-include)
  • 最后一组仅允许字母和数字(至少一到两个) 排除任何其他字符)
您可以测试它

[a-zA-z0-9-]
[a-zA-z0-9-]