備注1: 使用字符串創建的正則表達式:"\"也需要加轉義符: var reg1=new RegExp("\\w+"); 這和 直接使用:var reg2= /\w+/ 他們是等價的。
備注2: 獲取匹配結果集: string.match(regex,option可選) 和 Regex.exec(string). 注意,前者匹配時可設置匹配選項(i-忽略大小寫,g-全局匹配),后者只會匹配一次。
如:var regex1=new RegExp("a"); var regex2=new RegExp("a","ig"); 前者是創建匹配a的正則表達式,后者是創建匹配a的全局且忽略大小寫的正則表達式。
重點:Regex.test(string) 判斷是否存在字符集
Regex.exec(string) 獲取首次結果字符集
string.match(new Regex(string)) 獲取首次結果字符集
string.match(new Regex(string,"ig")) 獲取全局&忽略大小寫結果字符集
A:
var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
if (reg.test(input)) {
return true;
}
B:
this.email = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";
_this.isEmail = function (str) {
return new RegExp(window.LoginValidateRegExp.email).test(str);
};
C: "fasfwerweaadfwefewfafew".match(/a/g) 能匹配到所有的a
"fasfwerweaadfwefewfafew".match(new RegExp("a","g")) 能匹配到所有的a
"fasfwerweaadfwefewfafew".match(/a/) 只能匹配到第一個a
/a/.exec("fasfwerweaadfwefewfafew") 只能匹配到第一個a
/a/g.exec("fasfwerweaadfwefewfafew") 只能匹配到第一個a(這里加上全局g也沒用,exec方法只會匹配一次)
String.match方法的解釋有這樣一句話:
文章地址:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
If the regular expression does not include the g
flag, str.match()
will return the same result as RegExp.exec()
.
總結:當使用構造函數創造正則對象時,需要常規的字符轉義規則(在前面加反斜杠 \)。比如,以下是等價的:
var re = new RegExp("\\w+"); var re = /\w+/;
參考資料:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp