[英]Regex invalid group error while using in javascript
我有以下正则表达式,用于检查多种类型的电子邮件地址输入
[\W"]*(?<name>.*?)[\"]*?\s*[<(]?(?<email>\S+@[^\s>)]+)[>)]?
我得到了这笔钱我该如何在ruby的3个主要电子邮件客户端中对名称和电子邮件进行正则表达式?
我面临的问题是,在javascript中使用此方法时,出现错误“ Uncaught SyntaxError:无效的正则表达式:/[ /[\\W"]*(?"<name>".*?)[\\"]*?\\s*[<(]?(?"<email>"\\S+@[^\\s>)]+)[>)]?/
:无效的组“
我花了一整天的时间来解决此问题,但发现问题与回退有关 javascript不支持
我对正则表达式非常不好,需要一些建议。 有人能指出我正确的方向吗?
PS:我正在尝试使此功能与jquery validate插件集成
浏览器中的JavaScript通常不支持命名捕获。
命名的捕获位是这些(?<name>.*?)
和(?<email>\\S+@[^\\s>)]+)
。
您可以用编号的捕获组替换命名的捕获,更改以下内容:
[\W"]*(?<name>.*?)[\"]*?\s*[<(]?(?<email>\S+@[^\s>)]+)[>)]?
对此:
[\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
}
请记住,只有捕获组才能捕获某些内容。
据我所知,这没有什么可回避的地方(就像这样: (?<=prefix)
),但也许不支持标记的匹配项( (?"<name>"...)
)。 尝试不使用它,并按其编号引用匹配项:
/[\W"]*(.*?)[\"]*?\s*[<(]?(\S+@[^\s>)]+)[>)]?/
名称将是第一个,电子邮件是第二个捕获的组
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.