HTML 形式的正则表达式执行过程中遇到的问题

Issue faced during the implementation of the regex expression in HTML form

场景:

我已经在 https://www.regextester.com/ 中测试了以下正则表达式,它会根据需要执行验证。这意味着它不允许包含'@'字符的表达式。

面临的问题:

但是,当我在 HTML 中为表单验证实现相同的正则表达式时,它无法验证。这意味着它还允许包含“@”字符的表达式,这不是所需的结果。

这是正则表达式:

 ^[a-z0-9]+\.([a-z0-9])+(?!@)+(?!outlook.com)+(?!gmail.com)+$

以HTML形式实现为:

<td>
<input type="text" name="exchange_usertoadd" required="required"
pattern="^[a-z0-9]+\.([a-z0-9])+(?!@)+(?!outlook.com.np)+(?!gmail.com)+$" 
placeholder="Enter Exchange Username" value="" size="30">
</td>

要求的结果:

1.上面的正则表达式应该允许以下表达式:

一个。 john.mayor

b。 michael.clarke

c。 jitendra123.gurung

等等。

2。但它不应该允许以下表达式:

一个。 john.mayor@gmail.com

b。 jitendra.gurung@

c。萨拉德@

d。 michael.clarke@outlook.com

等等。

我在上面尝试过的正则表达式的实现中需要什么修正?

非常感谢您的建议。

也许我对您的要求的理解过于松散,但是对您的正则表达式使用 ^[^@]+$ 怎么样?它匹配所有给定的测试用例。

试一试:

/^([a-z0-9]*([.])*([a-z0-9]))+(?!outlook.com.np)(?!gmail.com)/mg

它是JS模式,请为您的输入字段更改它

Demo

我修改了表达式,它满足了我需要验证的要求。

这是符合我要求的正确工作表达式:

^([a-z0-9]*([.])*([a-z0-9]))+(?!@)(?!outlook.com.np)(?!gmail.com)+$