获取正则表达式的结果在if语句
问题描述:
我已经看到了使用后的人做到以下几点:获取正则表达式的结果在if语句
if (/Firefox\/(\+S)/.test(userAgent)) {
firefox = RegExp.$1;
}
我知道(八九不离十)正则表达式做什么,但我真的不知道如何将其访问RegExp.$1
。
而作为一个侧面说明:
if (/Win(?:dows)?([^do]{2})\s?(\d+\.\d+)?/.test(ua)) {
if (RegExp.$1 == "NT") {
switch (RegExp.$2) {
什么$1
和$2
之间的区别?
答
$ 1和$ 2有什么区别?
这些是到captured groups(由正则表达式所捕获)
正则表达式的JavaScript flavor指组#1用$ 1的参考文献,和组#2为$ 2。
Win(?:dows)?([^do]{2})\s?(\d+\.\d+)?
^ ^ ^
| | |
| group#1 group#2
|
ignored group (?: means non-capturing)
答
RegExp是每次运行RegExp时都会更新的全局对象。 RexExp。$ 1将包含匹配的最后一个模式中相应的括号组相匹配的文本。
对于旁注:$ 1包含的是括号中的正则表达式的第一部分,$ 2秒等......
漂亮的图,和漂亮的链接(: 感谢 – peirix 2009-06-15 10:53:24