我有这个正则表达式范围
/([a-zA-Z0-9\.\-#_~!$&'()*+,;=:]+)/
表示用户用户名的允许字符数。我想将@ char添加到范围中,但将其数量限制为0或1,并使其位置无关紧要。
我知道@ {0,1}是量词语法,但我如何将其与我的范围结合以符合我的规格。
要求:
由于
答案 0 :(得分:2)
您可以使用这样的前瞻性正则表达式:
/^(?!(?:[^@]*@){2})[-a-zA-Z0-9.#_~!$&'()*+,;=:@]+$/
(?!(?:[^@]*@){2})
将禁止输入中的@
,因此您可以在输入中使用0或1 @
。另请查看演示。
答案 1 :(得分:0)
我想在其中使用 \ w 让你的Regex很小
这是w在正则表达式中表示的内容
请展望未来,这将减少你的正则表达式的长度。
^(?!(?:[^@\n]*@){2})[\w.#_~!$&'()*+,;=:@]+$
答案 2 :(得分:-1)
只需复制正则表达式并在中间添加@
:
/^([-a-zA-Z0-9.#_~!$&'*+,;=:()]+@?[-a-zA-Z0-9.#_~!$&'*+,;=:()]+)$/
或更确切地说:
/^(@|@?[-a-zA-Z0-9.#_~!$&'*+,;=:()]+|[-a-zA-Z0-9.#_~!$&'*+,;=:()]+@|[-a-zA-Z0-9.#_~!$&'*+,;=:()]+@[-a-zA-Z0-9.#_~!$&'*+,;=:()]+)$/