繁体   English   中英

正则表达式可在字符串的开头和结尾验证hypen(-)

[英]Regex to validate hypen(-) at start and end of the string

我正在使用正则表达式验证字符串(“ -test-”)在字符串的开头和结尾是否包含hypens(-)。 所以我找到了一个正则表达式来限制正则表达式开始和结束时的连字符。

/^(?!-)[a-zA-Z0-9-' ]+[^-]$/i

当字符串包含多个带有或不带有连字符的char(“ aa”)时,此正则表达式正在按预期进行验证。 但是当我简单地传递一个没有连字符的字符串(“ a”)时,它就无法正常工作。

这些还需要允许特殊字符和字母数字字符,例如“ $ abcd&”。 需要在字符串的开头和结尾处调整oly hypen。

你们可以帮忙吗..

您拥有的模式匹配的字符串至少包含2个字符,因为[a-zA-Z0-9-' ]+需要1个字符才能匹配,而[^-]需要另一个字符。

您可以修改前瞻以使以-结尾的字符串也失败:

/^(?!-)(?!.*-$).+$/
       ^^^^^^^^

正则表达式演示

细节

  • ^ -字符串的开头
  • (?!-)(?!.*-$) -如果字符串开头未能匹配负向前看符号-或结束-
  • .+ -除换行符以外的任何1个或多个字符(使用[\\s\\S]匹配任何字符)
  • $ -字符串结尾。

此模式的展开版本为

^[^-]+(?:-+[^-]+)*$

观看此正则表达式演示

细节

  • ^ -字符串的开头
  • [^-]+ -除-以外的1个或多个字符
  • (?:-+[^-]+)* -0个序列
    • -+ -1个以上连字符
    • [^-]+ -除-以外的1个或多个字符
  • $ -字符串结尾。

要允许任何字符,但仅在开始和结束处禁止连字符:

^(?!-).*[^-]$

在regex101上查看演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM