我想在我们的电子邮件中的\\
符号之前接受/
和@
,例如用户名。
以下是我们正在使用的当前正则表达式:
^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$
我只想允许双反斜杠的原因是我希望在使用此正则表达式验证字符串是否为有效用户名时对字符串进行转义。
有效和无效的用例:
hello\\world@email.com
有效。hello\world@email.com
无效。hello/world@gmil.com
有效。hello@email.com
有效。我尝试了以下正则表达式,但它也允许单反斜杠:
^([\w-(\\\\)/\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$
答案 0 :(得分:1)
它应该如何转义取决于你使用的语言,但是你去了:
^(([-\w\/\.]|\\\\)+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$
我所做的只是在第一组\/
中添加正斜杠,并添加两个反斜杠作为替代|\\\\
。
^(([-\\w\\/\\.]|\\\\\\\\)+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$
答案 1 :(得分:1)
试试这个..
^([\w]+)((\\\\)*(/)*(\.)*)([\w]*)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$
答案 2 :(得分:0)
您需要在开始时添加否定前瞻。
^(?![^@]*?(?:\\\\\\|(?<!\\)\\(?!\\)))([\w-\\\\/.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$
@"(?m)^(?![^@]*?(?:\\\\\\|(?<!\\)\\(?!\\)))([\w-\\\\/.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"