文法規則計算式,用在字串的符合計算,可以作子字串的搜尋,替換。
\ | ^ | $ | * | + | ? |
產生一個文法規則計算式(Regular Expression)的物件,用作文字模式的演算。文法規則計算式有兩種宣告法:
var regex = new RegExp("文法規則計算式" [, "字旗"]);
var literal = /文法規則計算式/[字旗];
使用 RegExp 物件製造器時,字母 ”\” 必須加上脫離字母,也就是寫成”\\”。
- 程式用法:
<script type='text/javascript'>
var re=new RegExp("\\s", 'ig');
var rg=/\s/gi;
document.write( typeof re +' : '+ re +'<br />');
document.write( typeof rg +' : '+ rg );
</script> - 執行結果:
object : /\s/gi
object : /\s/gi
字旗可是下述字母的組合:
- g:全字串符合計算。沒設此旗時,只作第一個符合計算。
- i:大小寫視為相同。沒設此旗時,大小寫不相同。
- m:在多行文字作符合計算。
- 程式用法:
<script type='text/javascript'>
var s='hello Look glove';
document.write( s.replace("l" , "." ) +'<br />');
document.write( s.replace(/l/ , "." ) +'<br />');
document.write( s.replace(/l/g , "." ) +'<br />');
document.write( s.replace(/l/gi , "." ) );
</script> - 執行結果:
he.lo Look glove
he.lo Look glove
he..o Look g.ove
he..o .ook g.ove
- replace() 是物件 String 的方法,會將字串中符合第一個參數的子字串,替換成第二個參數的字串。
脫離字母,有兩種用途:
(一)一般文字母前面加了 \,表示是特別字。例如 \b \B \t 等特別字。
(二)特別字母前面加了 \,則以一般文字母處理。例如 $ * + 等特別字母要當一般字母使用時,必須寫成 \$ \* \+。
文字行的開始位置。如果設了字旗 m,則每一個斷行,都是一個新的文字行開始位置。
- 程式用法:
<pre>
<script type='text/javascript'>
var s='Mad Max\nMark Mouse';
document.write( s.replace(/^M/g, 'S' ) +'<p>');
document.write( s.replace(/^M/gm, 'S' ) );
</script>
</pre> - 執行結果:
Sad Max Mark Mouse
Sad Max Sark Mouse
文字行的尾端。如果設了字旗 m,則每一個斷行之前,都是一個文字行尾端。
- 程式用法:
<script type='text/javascript'>
var s='Mad Sam';
document.write( s.replace(/M$/gi, 'd' ) );
</script> - 執行結果:
Mad Sad
符合發生 0 次或更多次。
- 程式用法:
<script type='text/javascript'>
var s='Hello Wendy';
document.write( s.replace(/el*/ig, 'x' ) );
</script> - 執行結果:
Hxo Wxndy
符合發生 1 次或更多次。等於 {1,}。
- 程式用法:
<script type='text/javascript'>
var s='Hello Wendy';
document.write( s.replace(/el+/ig, 'x' ) );
</script> - 執行結果:
Hxo Wendy
符合發生 0 次或 1次。將 ? 接在 *, +, ?, {} 之後,會變成不貪心模式,只求最小符合字串。否則為貪心模式,求最大符合字串。
- 程式用法:
<script type='text/javascript'>
var s='Hello Wendy';
document.write( s.replace(/el?/ig, 'x' ) +'<br />');
document.write( s.replace(/el+/ig, 'x' ) +'<br />');
document.write( s.replace(/el+?/ig, 'x' ) +'<br />');
document.write( s.replace(/el*/ig, 'x' ) +'<br />');
document.write( s.replace(/el*?/ig, 'x' ) );
</script> - 執行結果:
Hxlo Wxndy
Hxo Wendy
Hxlo Wendy
Hxo Wxndy
Hxllo Wxndy