gpt4 book ai didi

javascript - 用于验证字符串开头和结尾处的连字符 (-) 的正则表达式

转载 作者:行者123 更新时间:2023-11-28 17:23:35 27 4
gpt4 key购买 nike

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

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

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

而且这些还需要允许特殊字符和字母数字字符,例如“$abcd&”。需要在字符串的开头和结尾限制连字符。

你们能帮忙解决这个问题吗?

最佳答案

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

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

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

请参阅regex demo

详细信息

  • ^ - 字符串的开头
  • (?!-)(?!.*-$) - 如果字符串以 - 开头或以 - 结尾,则匹配失败的负向先行
  • .+ - 除换行符之外的任何 1 个或多个字符(使用 [\s\S] 匹配任何字符)
  • $ - 字符串结尾。

此模式的展开版本是

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

参见this regex demo

详细信息

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

关于javascript - 用于验证字符串开头和结尾处的连字符 (-) 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52037004/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com