只允许一次,不允许与任何其他混合



我有下面的正则表达式。我想验证像abcd,*,acd123等。我不希望*与任何像abc*一样的东西混在一起,它应该只允许一次ex以下应该被拒绝** or *,*

/^([A-Za-zd/*]+(,[A-Za-zd/*]+)*)?$/.test(v)
有效:

ADSAD,*,adsad
*,adsds,asd123
无效:

**,asads
sasd,*,asa,*

我不确定它会解决你的整个问题,但张贴的问题可以通过这种方式解决:

^([^*]*,)?*(,[^*]*)?$

,

  • ^为字符串的开始;
  • [^*]是除和星号以外的任何字符。
    • 由于我们有[^*]*,,它意味着任何数量的非星号的字符,后面跟着逗号;
    • ([^*]*,)?表示我们在字符串中有0个或最多一个。
  • *是星号字符。因为它是一个特殊的,我们需要用;
  • 转义它。
  • 再次,我们有' ([^],)?
  • $表示字符串的结束。

结果如下:

> /^([^*]*,)?*(,[^*]*)?$/.test('abc,*,def')
true
> /^([^*]*,)?*(,[^*]*)?$/.test('abc,def')
false
> /^([^*]*,)?*(,[^*]*)?$/.test('abc,*,def,*,a')
false
> /^([^*]*,)?*(,[^*]*)?$/.test('abc,*')
true
> /^([^*]*,)?*(,[^*]*)?$/.test('*,abc')
true

*排除在字符类之外,并且只允许它作为字母数字或/符号的替代:

/^(?!.**.**)(?:(?:*|[A-Za-zd/]+)(?:,(?:[A-Za-zd/]+|*))*)?$/

查看regex演示

:

  • ^ -字符串
  • 起始
  • (?!.**.**) -一旦字符串
  • 中有2个*符号,就会导致匹配失败
  • (?:(?:*|[A-Za-zd/]+)(?:,(?:[A-Za-zd/]+|*))*)? -一个可选的组(整个字符串可以为空)匹配:
    • (?:*|[A-Za-zd/]+) - * (*)或(|) 1个或多个字母数字或/符号([A-Za-zd/]+),然后后跟
    • (?:,(?:[A-Za-zd/]+|*))* - 0个或多个序列:
      • , -逗号
      • (?:[A-Za-zd/]+|*) - 1个或多个字母数字或/符号或*
  • $ -字符串结束

相关内容

  • 没有找到相关文章

最新更新