首页 > 解决方案 > 正则表达式创建允许,禁止少数字符

问题描述

我是正则表达式的新手,我有这个用例:

  1. 允许字符、数字。
  2. 允许零个或一个问号。(? - 不允许使用有效的连续问号 (??))。

测试有效

?test - 有效

??测试-无效

?test?test - 有效

???测试无效

测试??测试-无效

  1. 排除 $ 符号。

[a-zA-Z0-9?] - 似乎这不起作用

谢谢。

标签: javascriptregex

解决方案


试试下面的正则表达式:
^(?!.*\?\?)[a-zA-Z0-9?]+$

  1. 首先我们使用Negetive lookahead- 它允许我们排除任何后跟双问号的字符(Negetive lookahaed不消耗字符)

  2. 由于问号在正则表达式中具有特殊含义(Quantifier- 匹配 0 到 1 次),因此每个问号都使用反斜杠进行转义。

  3. 末尾的加号是 a Quantifier— 匹配一次到无限次,尽可能多次

你可以在这里测试


推荐阅读