Php 使用正则表达式的电子邮件验证

Php 使用正则表达式的电子邮件验证,php,javascript,Php,Javascript,我正在使用此正则表达式进行电子邮件验证,但它不允许连字符(-): 请任何人告诉我怎么做?尝试避开连字符: /^\w+([.\-_]?\w+)*@\w+([.\-_]?\w+)*(.\w{2,4})+$/ 破折号保留在方括号内的范围内,因此如果要使其成为文字,则需要将其转义。尝试转义连字符: /^\w+([.\-_]?\w+)*@\w+([.\-_]?\w+)*(.\w{2,4})+$/ 破折号是为方括号内的范围保留的,因此如果要使其成为文字,则需要对其进行转义。PHP中有一个函数用于此目的,

我正在使用此正则表达式进行电子邮件验证,但它不允许连字符(
-
):


请任何人告诉我怎么做?

尝试避开连字符:

/^\w+([.\-_]?\w+)*@\w+([.\-_]?\w+)*(.\w{2,4})+$/

破折号保留在方括号内的范围内,因此如果要使其成为文字,则需要将其转义。

尝试转义连字符:

/^\w+([.\-_]?\w+)*@\w+([.\-_]?\w+)*(.\w{2,4})+$/

破折号是为方括号内的范围保留的,因此如果要使其成为文字,则需要对其进行转义。

PHP中有一个函数用于此目的,我们会尽量避免使用正则表达式。它们很强大,但也会变得毛茸茸的

filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)

PHP中有一个函数用于此,它会尽量避免使用正则表达式。它们很强大,但也会变得毛茸茸的

filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)

... 或者把它放在最后一位:
[.\-\\\]
=
[.\-]
@jensgram-这样行吗?它会将其从“范围”字符中删除吗?从来没有尝试过/知道那一个是的,它只是这样:)将它放在最后可以使它明确无误,因为它不能是范围字符。是的,这是有意义的,不能对结束括号进行范围=)…您的示例看起来像是参差不齐的眼睛哈。。。或者把它放在最后一位:
[.\-\\\]
=
[.\-]
@jensgram-这样行吗?它会将其从“范围”字符中删除吗?从未尝试过/知道oneYes,它只是这样:)将它放在最后可以使它明确无误,因为它不能是范围字符。是的,这是有意义的,不能对结束括号进行范围设置=)…您的示例看起来像是眼睛参差不齐哈是的,我也同意您最好使用filter_var而不是regex,如果可能的话。是的,这确实有效,但是,在提交到服务器之前,首先确保用户具有正确的格式不是更好吗?那么就不需要做一次完整的往返来检查错误了。这个问题被标记为php,我认为它适合给出一个php解决方案。还有ajax。是的,我也同意如果可能的话,最好使用filter_var而不是regex。是的,这确实有效,但是在提交到服务器之前,首先确保用户具有正确的格式不是更好吗?那么就不需要做一次完整的往返来检查错误了。这个问题被标记为php,我认为它适合给出一个php解决方案。还有ajax。我认为如果你把它作为你的范围内的第一个元素,它的字面意义将是“-”。我认为如果你把它作为你的范围内的第一个元素,它的字面意义将是“-”。