Javascript正则表达式-限制有效字符数
我正在学习javascript中的正则表达式,我想我还缺少一些东西 我正在使用一个示例,试图从字符串中提取有效的电子邮件地址。我收到了有效的电子邮件,但也收到了无效的。代码如下:Javascript正则表达式-限制有效字符数,javascript,regex,validation,email,Javascript,Regex,Validation,Email,我正在学习javascript中的正则表达式,我想我还缺少一些东西 我正在使用一个示例,试图从字符串中提取有效的电子邮件地址。我收到了有效的电子邮件,但也收到了无效的。代码如下: var teststring = "This is my test string with a valid email: this@that.com, and an invalid email: this@broken.1. Pull only the valid email."; test
var teststring = "This is my test string with a valid email: this@that.com,
and an invalid email: this@broken.1. Pull only the valid email.";
teststring.match(/[A-Za-z0-9_+.-]+@[A-Za-z0-9]+.[A-Za-z]{2,3}/g)
当我运行match方法时,我会收到两封有效的电子邮件“this@that.com“和无效的电子邮件”this@broken.1”他回答
我认为最后一个方括号末尾的{2,3}应该指定括号内的特定字符搜索应该只有在它们包含2到3个条件实例时才有效,那么为什么在最后一个点后只返回“1”的破损电子邮件呢
我还应该补充一点,我完全理解这不是一个完完全全的电子邮件验证表达式。对我来说,这纯粹是一个试图理解正则表达式的问题。我四处寻找一个明确的答案,但找不到确切的答案
谢谢
将匹配任何字符。要匹配实际的
,您需要\。
teststring.match(/[A-Za-z0-9_+.-]+@[A-Za-z0-9]+\.[A-Za-z]{2,3}/g)
您需要转义最后一个
。否则,它意味着“匹配任何字符”,因此表达式将捕获以下块:
this
@
brok
en
尝试:
因为您要查找大写或小写字母,所以可以通过使其不区分大小写来简化搜索。正则表达式末尾的/g使匹配成为全局匹配(即返回所有此类匹配);如果您只需要一个匹配项,但不关心case,则可以使用/i。比如说,
"CaSe InSeNsItIvE iS cOoL; I lOvE cAsEs".match(/case/i)
返回一个元素数组[“CaSe”]。要获取所有不区分大小写的匹配,只需使用/gi:
"CaSe InSeNsItIvE iS cOoL; I lOvE cAsEs".match(/case/gi)
返回[“CaSe”,“CaSe”]
您的查询可以缩短为
teststring.match(/[A-Z0-9_+.-]+@[A-Z0-9]+\.[A-Z]{2,3}/gi)
我知道你这么做只是为了学习,但这不应该被忽视,太棒了,谢谢!也谢谢你在回复中添加了这些内容。这确实帮助我想象发生了什么。
teststring.match(/[A-Z0-9_+.-]+@[A-Z0-9]+\.[A-Z]{2,3}/gi)