2017-08-16 565 views
1

我有这个^[a-zA-Z0-9 @&$]*$,但在少数情况下不适用于我。正则表达式允许字母数字,空格,一些特殊字符

如果有人类型

  • 只由数字组成(例如1234567)的字符串
  • 的字符串开始以特殊字符(例如&123abc

需要被拒绝。请注意,特殊字符可以在中间和结尾。

+2

你能准确列出哪些条件需要被拒绝,为什么? –

+1

尝试['^(!!\ d + $)(?:[a-zA-Z0-9] [a-zA-Z0-9 @&$] *)?$'](https://regex101.com/R/AScqhl/1)。 –

+0

谢谢,请将其作为您的答案,以便我可以将此标记为已接受的答案。 – Sharpeye500

回答

1

你似乎需要避免匹配的字符串,仅由数字,并确保该字符串以字母数字开始。我假设你也需要能够匹配空字符串(原始正则表达式匹配空字符串)。

这就是为什么我建议

^(?!\d+$)(?:[a-zA-Z0-9][a-zA-Z0-9 @&$]*)?$ 

regex demo

详细

  • ^ - 串
  • (?!\d+$)启动 - 失败的比赛,如果负前瞻一个字符串•数字只有
  • (?:[a-zA-Z0-9][a-zA-Z0-9 @&$]*)? - 的可选顺序: - 一个数字或字母
  • [a-zA-Z0-9 @&$]* - 0+数字,字母,空格,@&$字符
    • [a-zA-Z0-9]$ - 字符串结尾。
  • +0

    如果我想排除一些并包含一些特殊字符,我如何排除一些,为包容,我从你的正则表达式中看到它。 – Sharpeye500

    +0

    @ Sharpeye500:对不起,你是什么意思?如果你不想匹配一个字符,首先不要将它添加到字符类中。 –

    +0

    如果有“。” (句点)之间的字符,目前正则表达式接受它。 例如,“Test.Work”,如果我需要拒绝“。”。 ,我如何排除正则表达式。 – Sharpeye500

    1

    你可以用下面的正则表达式

    ^(?!\d+$)\w+\S+ 
    

    检查做演示here

    相关问题