我有以下正则表达式来检查多种类型的电子邮件地址输入
[\W"]*(?<name>.*?)[\"]*?\s*[<(]?(?<email>\S+@[^\s>)]+)[>)]?
我把这个关掉了如何在 ruby 中从 3 个主要电子邮件客户端中正则表达式显示名称和电子邮件? https://stackoverflow.com/questions/9244430/how-do-i-regex-a-name-and-an-email-out-of-the-3-major-email-clients-in-ruby
我面临的问题是,在 javascript 中使用它时,我收到错误“未捕获的语法错误:无效的正则表达式:/[\W"]*(?"<name>".*?)[\"]*?\s*[<(]?(?"<email>"\S+@[^\s>)]+)[>)]?/
:无效组”
我花了一整天的时间试图解决这个问题,我发现这个问题与向后看该 JavaScript 不支持
我不擅长正则表达式,需要一些建议。有人可以指出我正确的方向吗?
PS:我正在尝试使此功能与jquery validate插件集成
Jquery 验证 http://jqueryvalidation.org/
浏览器中的 JavaScript 通常不支持命名捕获。
命名的捕获位是这些(?<name>.*?)
and (?<email>\S+@[^\s>)]+)
.
您可以将命名捕获替换为编号捕获组,并更改此设置:
[\W"]*(?<name>.*?)[\"]*?\s*[<(]?(?<email>\S+@[^\s>)]+)[>)]?
to this:
[\W"]*(.*?)[\"]*?\s*[<(]?(\S+@[^\s>)]+)[>)]?
所以在 JavaScript 中它看起来像这样:
match = subject.match(/[\W"]*(.*?)[\"]*?\s*[<(]?(\S+@[^\s>)]+)[>)]?/i);
if (match != null) {
// matched text: match[0]
// match start: match.index
// capturing group 1 (name): match[1]
// capturing group 2 (email): match[2]
} else {
// Match attempt failed
}
请记住,只有捕获某些内容时,才可能添加捕获组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)