JS_正則表達式_使用字符串創建的正則表達式_反斜杠也需要添加轉義符


備注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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM