gpt4 book ai didi

javascript - 连字符和下划线永远不应该是连续的,但可以在字符串中多次出现

转载 作者:行者123 更新时间:2023-11-28 04:11:30 25 4
gpt4 key购买 nike

我有一个要求,我必须验证 Excel 中的字段。

验证:

  1. 字段应以 [a-zA-Z0-9] 开头和结尾,但不得以任何特殊字符 [-_]
  2. 不能连续多次包含“-”和“_”。
    示例:
    A--Badasd(不允许)
    A__Bsdasdas(不允许)
    A-_fdsfdsd(不允许)
    A_-sfsdfsdf(不允许)
    A-B-adf(允许)
    A_b_adads(允许)

我想出了以下正则表达式,但是,它似乎甚至不接受不连续的“-”和“_”条目。

^[a-zA-z0-9]+(([\xFF01-\xFF5E]+|[\\-\\_])+)[a-zA-Z0-9]+$

[\xFF01-\xFF5E] 不允许任何双宽字符,因此请忽略它,因为它工作正常。

任何帮助将不胜感激。

最佳答案

我只能建议基于前瞻的模式(因为 [\xFF01-\xFF5E] 匹配 _ 并且在 JS 正则表达式中限制它将使模式更加麻烦):

/^[a-z0-9](?:(?!.*?[-_]{2})[\xFF01-\xFF5E-]*[a-z0-9])?$/i

请参阅regex demo .

此模式也将匹配 1 个字符长度的字符串,并且仅匹配以 ASCII 字母数字字符开头和结尾且不包含 --_- 的字符串>、-___ 其中。

如果要“阻止”长度为 1 的字符串,即将最小匹配长度设置为 2,则应从模式中删除 (?:)?上图:

/^[a-z0-9](?!.*?[-_]{2})[\xFF01-\xFF5E-]*[a-z0-9]$/i

详细信息

  • ^ - 字符串开头
  • [a-z0-9] - 字母数字 ASCII 字符
  • (?:(?!.*?[-_]{2})[\xFF01-\xFF5E_-]*[a-z0-9])? - 可选 (1或 0 次出现)的序列:
    • (?!.*?[-_]{2}) - 前向检查,如果有 2 个连续的 -,则匹配失败_ 除换行符之外的任何 0 个以上字符之后的任意位置
    • [\xFF01-\xFF5E-]* - \xFF01-\xFF5E 范围内的任何字符或/和 -<
    • [a-z0-9] - 字母数字 ASCII 字符
  • $ - 字符串结尾。

关于javascript - 连字符和下划线永远不应该是连续的,但可以在字符串中多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46233558/

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