標籤:ber 詳細 定位字元 guide evel 描述 字元 方式 傳回值
在javascript裡面的定義 1、通過RegExp建構函式定義一個Regex。第一個參數為Regex以字串傳入,第二個參數為修飾符也以字串傳入。
例:var caps = new RegExp("[A-Z]", "g");
2、直接定義一個Regex直接量,運算式右正斜杠符號“/”分隔,後直接跟修飾符。(推薦用這種)
例:var caps = /[A-Z]/g;
javascriptRegex常用的字元
| 字元 |
描述 |
例子 |
| [exp] |
對於中括弧([])包裹的字元序列,Regex處理常式會匹配中括弧內的任意一個字元。 |
[exp]匹配e,x,p中的任意一個字元 |
| [^exp] |
在中括弧內前方加上^字元,將匹配中括弧外的任意一個符號,除去的意思。 |
[^exp]匹配e、x、p之外的任意一個字元 |
| [exp1-exp2] |
使用-連字號表示匹配exp1字元到exp2字元序列中的任意一個字元。 |
[A-Z]匹配A-Z任意一個字元;[0-9]匹配0-9任意一個數字 |
| (exp) |
對於小括弧包裹的字元序列,Regex會以該字元次序確切進行匹配(包含就能匹配)。 |
(exp)匹配"exp"這個字串 |
| (exp1\ |
exp2) |
使用管道字元\ |
| exp+ |
運算式後使用+字元,表示只有當該運算式被包含一次或者多次時匹配。 |
exp+匹配exp |
| \s |
匹配空白字元,即空格,tab定位字元,斷行符號符 |
A\sB匹配字串中含A空白符B |
| \S |
匹配除了空白字元意外的任意一個字元 |
A\SB匹配A不是空白符任一字元B |
| \d |
匹配從0-9的一個數字 |
|
| \D |
匹配除了數字以為的任意一個字元 |
|
| \w |
匹配一個文字字元,即一個字,數字或字母 |
|
| \W |
匹配除了文字字元意外的任意一個字元 |
|
除了常用的運算式,還有的就是修飾符了,用來定義Regex該如何使用的,有三種可能的值,可以作為選項單獨使用,也可以多個一次使用。
| 修飾符 |
描述 |
| g |
應用Regex在比較字串中找出所有匹配的項,而不是只返回第一個匹配項 |
| i |
應用運算式進行比較匹配的同時,忽略大小寫 |
| m |
應用運算式對多行的文本進行比較匹配,而不只是比較第一行 |
javascriptRegex常見用法
有三種string類型的方法可以使用Regex。match()尋找出能匹配Regex的所有子字元並將結果以字串數組的形式返回。replace()方法尋找和前者相同的子字元並用傳入該方法的另一個字串進行替換。search()只是定位能匹配到Regex的第一個子字串的位置,並以數字序號形式放回字串在整個字串中的位置。
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 |
當第一個參數中包含的Regex使用小括弧對進行運算式分組,則可以提取出特定的運算式所匹配的子字串(\$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 W2rldalert("Hello World".replace(/\s/g, replaceWithCount)); //Hello3World
總結
這隻是我寫的作為筆記的Regex一些簡單的判斷和javascript用法。Regex還可以很複雜很強大,那就要再你要使用的時候再去挖掘思考了。如果想瞭解更多,可以學習Mozilla開發人員網路上的關於javascript中使用Regex的指引介紹。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions寫得更加詳細。
javascriptRegex筆記(轉載)