正则表达式允许使用字母数字,空格,一些特殊字符

时间:2017-08-16 18:59:39

标签: javascript regex

我有^[a-zA-Z0-9 @&$]*$,但在少数情况下不适合我。

如果有人打字

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

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

2 个答案:

答案 0 :(得分:2)

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

这就是为什么我建议

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

请参阅regex demo

<强>详情

  • ^ - 字符串开头
  • (?!\d+$) - 如果字符串仅为数字
  • ,则匹配失败的否定前瞻
  • (?:[a-zA-Z0-9][a-zA-Z0-9 @&$]*)? - 可选序列:
    • [a-zA-Z0-9] - 数字或字母
    • [a-zA-Z0-9 @&$]* - 0+位,字母,空格,@&$字符
  • $ - 字符串结束。

答案 1 :(得分:1)

你可以使用以下正则表达式

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

查看演示here