Regular Expression
名稱 | 說明 |
---|---|
\n | 換行符號 |
\r | Enter |
\t | Tab |
\xHex | 16進位ASCII |
\xOct | 8進位ASCII |
\符號 | 轉義,讓符號只是符號,無RE作用 |
因為符號在RE裡有其他作用,\.代表.、\?代表?,符號有:.、?、/、\、[、]{、}、(、)、+、*、|。
名稱 | 說明 |
---|---|
[abc] | 代表英文a、b、c |
[a-z] | 代表26個英文小寫 |
[A-Z] | 代表26個英文大寫 |
[0-9] | 代表數字0到9 |
[a-zA-Z] | 代表所有大小寫英文 |
[^abc] | 除了a、b、c以外任何字元 |
- | 英文或數字的一個範圍 |
[^] | 在[]裡的^為排除的意思 |
[ ]代表一個區段、段落。
名稱 | 說明 |
---|---|
\w | [0-9a-zA-Z_],任何英數字和底線 |
\W | [^0-9a-zA-Z_],也就是^\w的意思 |
\d | [0-9],任何數字 |
\D | [^0-9],也就是^\w的意思 |
\s | 比對空格,空白字元(space)、tab、換行字元、return/enter |
. | .(點)比較任何字元,換行字元(newline)除外 |
以上都是常用的Escape字串。
Regular Expression語法
var reName = /pattern/[g|i|gi];
使用變數來儲存pattern,遇/.../字串自動建立RegExp物件。把pattern被在"//"符號之間,就是你所要過濾的規則,例如/[0-9]/。
[g|i|gi]選擇性參數,尋找方式
- g:比對字串中所有符合pattern字串的子字串, 如果沒有設定,將只找第一個符合pattern的字串
- i:不區分pattern字串的英文大小寫
尋找方式範例
// jscript(j小寫)和Jscript(J大寫)都符合 var reJS1 = /[jJ]script/; // 2*2會出現四種符合的組合 // javascript、javaScript、Javascript、JavaScript var reJS2 = /[jJ]ava[sS]cript/;
^開頭$結尾
// 找出開頭是This的字串 // 注意,此^不是放在[^],位置不同作用不同 var reStar = /^This/; // 找出結尾是bye.的字串 var reEnd = /bye.$/
名稱 | 說明 |
---|---|
^ | 比對字串開頭 |
$ | 比較字串結尾 |
^開頭$結尾範例
// 需要指定「出現次數」,例如身分證 // A123456789,第一碼為英文,第二碼為男女,3-9碼為數字 var reID = /^[a-zA-Z]{1}[1-2]{1}[0-9]{8}/;
量詞
名稱 | 說明(次數) |
---|---|
? | 0或1次 |
* | 0或多次 |
+ | 1或多次 |
{n} | 出現n次 |
{n,} | 至少n次 |
{n,m} | n到m次 |
( ) | 集合字元或/和中介字元,成為子樣式 |
最後一個(),我們舉個例子,「/(Hot)? ?Donuts/」過濾條件,可比對出Donuts或Hot Donuts。而「/(red|blue) pill/] 過濾條件,可比對出red pill或blue pill。
定義好樣式(pattern)後,可使用test()方法來測試。
// 定義過濾條件 var regex = /^\d{5}/$; // 使用test()測試是否符適合條件 if (!regex.test(inputField.Value)) ...
RegExp物件
var objRE = new RegExp("pattern字串", "g|i|gi");
第一個pattern字串(不需放在//符號之間),第二個為尋找方式的參數。使用RegExp物件的test()方法進行比對,符合回傳true。
objRE.test(strValue);
如果在JavaScript字串變數需要尋找是否擁有符合Regular Expression的pattern子字串,此時請使用String物件的match()方法,例如,
String.match(objRE);
字串(String)的match()方法範例,
var str = "This is book."; var objRE = new RegExp("is", "g"); var result = str.match(objRE);
我們將比對結果儲存起來,然後,
// 沒有會傳回null,有會傳回Array // is, is --> 陣列 document.write(result); // 傳回符合數量 // 2 document.write(result.length);
3Q
回覆刪除感謝
回覆刪除