1. 程式人生 > >javascript正則表達式筆記(轉載)

javascript正則表達式筆記(轉載)

lac pre guide evel 如何 個數 doc 關於 特定

在javascript裏面的定義

1、通過RegExp構造函數定義一個正則表達式。第一個參數為正則表達式以字符串傳入,第二個參數為修飾符也以字符串傳入。

例:var caps = new RegExp("[A-Z]", "g");

2、直接定義一個正則表達式直接量,表達式右正斜杠符號“/”分隔,後直接跟修飾符。(推薦用這種)

例:var caps = /[A-Z]/g;

javascript正則表達式常用的字符

字符描述例子
[exp] 對於中括號([])包裹的字符序列,正則表達式處理程序會匹配中括號內的任意一個字符 [exp]匹配e,x,p中的任意一個字符
[^exp] 在中括號內前方加上^字符,將匹配中括號外的任意一個符號,除去的意思
[^exp]匹配e、x、p之外的任意一個字符
[exp1-exp2] 使用-連字符表示匹配exp1字符到exp2字符序列中的任意一個字符 [A-Z]匹配A-Z任意一個字符;[0-9]匹配0-9任意一個數字
(exp) 對於小括號包裹的字符序列,正則表達式會以該字符次序確切進行匹配(包含就能匹配) (exp)匹配"exp"這個字符串
(exp1\ exp2) 使用管道字符\
exp+ 表達式後使用+字符,表示只有當該表達式被包含一次或者多次時匹配 exp+匹配exp
\s 匹配空白字符,即空格,tab制表符,回車符 A\sB匹配字符串中含A空白符B
\S 匹配除了空白字符意外的任意一個字符 A\SB匹配A不是空白符任意字符B
\d 匹配從0-9的一個數字
\D 匹配除了數字以為的任意一個字符
\w 匹配一個文字字符,即一個字,數字或字母
\W 匹配除了文字字符意外的任意一個字符

除了常用的表達式,還有的就是修飾符了,用來定義正則表達式該如何使用的,有三種可能的值,可以作為選項單獨使用,也可以多個一次使用。

修飾符描述
g 應用正則表達式在比較字符串中找出所有匹配的項,而不是只返回第一個匹配項
i 應用表達式進行比較匹配的同時,忽略大小寫
m 應用表達式對多行的文本進行比較匹配,而不只是比較第一行

javascript正則表達式常見用法

有三種string類型的方法可以使用正則表達式。match()查找出能匹配正則表達式的所有子字符並將結果以字符串數組的形式返回。replace()方法查找和前者相同的子字符並用傳入該方法的另一個字符串進行替換。search()只是定位能匹配到正則表達式的第一個子字符串的位置,並以數字序號形式放回字符串在整個字符串中的位置。

    var regEx = /他媽的/g,
        string = "我去你他媽的";
    alert(string.match(regEx));         //他媽的
    alert(string.search(regEx));        //3
    alert(string.replace(regEx, "*"));  //我去你*

replace()特殊用法

可用作javascript字符串的replace()方法第二個參數的特殊字符

字符序列含義例子
$$ 把找到的字符串用一個單獨的$字符代替 "Hello World".replace(/o/g, "\$\$");//"Hell\$ W\$rld"
$& 使用第一個參數中所給定的字符串來替換所找到的子字符串 "Hello World".replace(/o/g, "$&");//"Hello World"
$`(ESC下面那個`) 使用所找到的字符串之前的文本來替換該子字符串 "Hello World".replace(/o/g, "$`");//"HellHell WHello Wrld"
$‘ 使用所找到的字符串之後的文本來替換該子字符串 "Hello World".replace(/o/g, "$‘");//"Hell World Wrldrld"
\$1, \$2 當第一個參數中包含的正則表達式使用小括號對進行表達式分組,則可以提取出特定的表達式所匹配的子字符串(\$1對應第一個小括號,\$2對應第二個小括號) "Hello World".replace(/(o)(r)/g, "\$1\$2\$1\$2");//"Hello Wororldd"(查找到or,然後替換成oror

還有一種就是replace() 的第二個參數可以用函數方式傳入,然後用函數的返回值來替換原子字符串。

var count = 0;
function replaceWithCount() {
    count = count + 1;
    return count;   
}
alert("Hello World".replace(/o/g, replaceWithCount)); //Hell1 W2rld
alert("Hello World".replace(/\s/g, replaceWithCount)); //Hello3World

總結

這只是我寫的作為筆記的正則表達式一些簡單的判斷和javascript用法。正則表達式還可以很復雜很強大,那就要再你要使用的時候再去挖掘思考了。如果想了解更多,可以學習Mozilla開發者網絡上的關於javascript中使用正則表達式的指引介紹。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions寫得更加詳細。

javascript正則表達式筆記(轉載)