当前位置: 技术问答>java相关
正则表达式修改form中资料!
来源: 互联网 发布时间:2015-09-09
本文导语: JavaScript 在第四版之後,針對正規表示法增加了數個字串方法,這些字串方法的用途很廣,可以列舉如下: 字串方法 功能 str.search(re) 正規式 re 在某個字串 str 出現的位置 str.match(re) 抽取符合規格的部分...
JavaScript 在第四版之後,針對正規表示法增加了數個字串方法,這些字串方法的用途很廣,可以列舉如下:
字串方法 功能
str.search(re) 正規式 re 在某個字串 str 出現的位置
str.match(re) 抽取符合規格的部分,並以陣列傳回
str.replace(re, new_part) 代換符合正規式 re 的部分
使用正規表示法及上述的字串方法,我們對字串的處理能力大增,不但可以進行搜尋比對,還可以立刻修改字串(例如:即時修改表單資料),本節將說明這些功能。
若要尋找某個正規式在一個字串的出現位置,可用字串的 search 方法,例如:
str = "現任總統是李輝,李炳輝是金門王的搭檔";
re = /李.輝/;
index = str.search(re);
document.write(index)
將會印出
5
其中 str.search(re) 將會傳回符合 re 的第一個位置(此例為5)。若字串 str 不符合 re,則回傳值為 -1。若只是要判斷輸入字串是否符合某個正規式,也可以使用 re.test(str),這在上一節已經說明過了。
使用字串的 match 方法,可在一個字串中,取出符合某個正規表示式的子字串。在下例中,我們將輸入字串和正規式「/李.輝/g」比對,並將符合部分印出:
str = "現任總統是李輝,李炳輝是金門王的搭檔";
re = /李.輝/g;
found = str.match(re);
document.write(found)
其中「.」可比對任何一個字元。上述程式碼印出結果為:
李輝,李炳輝
善用正規表示式及字串的 replace 方法,就可以對字串進行任意修改。假設有一個字串如下:
str = "現任總統是李輝,李輝是現任總統";
若要將第一個「李輝」代換成「陳水」,印出的結果如下:
現任總統是陳水,李輝是現任總統
若使用正規表示法,其程式碼如下:
str = "現任總統是李輝,李輝是現任總統";
re = /李輝/;
newstr = str.replace(re, "陳水");
document.write(newstr)
現任總統是陳水,李輝是現任總統
在上例中,re 就是一個正規式,字串的 replace 方法將符合正規式的部分代換成「陳水」,並將新字串傳回給變數 newstr。若要將所有的「李輝」改成「陳水」,只需將正規式改成「/李輝/g」就可以了。
處理表單資料時,最常用的資料修改方式就是去除前後的空白。這種例行工作就可以由正規表示法及字串的 replace 方法來輕鬆完成。例如:
中文大名:
在上例中,若按下「檢驗」,JavaScript 即會將所有的空白部分(含中文大五碼)刪除。程式碼如下:
function checkChineseName(UI) {
UI.value = UI.value.replace(/[s ]+/g, ""); // s & 全形空白
}
中文大名:
對於英文的輸入,我們通常要消除字頭及字尾的空白,並將句中的多個空白合成一個空格,例如:
英文大名:
程式碼如下:
function checkEnglishName(UI) {
var str = UI.value;
// get rid of leading and trailing white spaces
str = str.replace(/^[s ]+/g, "");
str = str.replace(/[s ]+$/g, ""); // s & 全形空白
// merge multiple white spaces into one
str = str.replace(/[s ]+/g, " ");
UI.value = str;
}
英文大名:
在正規表示法的比對過程中,所採用的方法是「貪心比對」(Greedy Match),因此會盡量「貪」到越多的字元越好,例如:
str = "fred xxxxx barney";
re = /x+/;
found = str.match(re);
document.write(found)
印出結果為:
xxxxx
在使用「貪心比對」時,會採用「越左越貪」的原則,例如:
str = "a xx b xxxx b xxx d";
re = /a(.*)b(.*)d/;
found = str.match(re);
document.write("RegExp.$1 = "+RegExp.$1+"
")
document.write("RegExp.$2 = "+RegExp.$2+"
")
印出結果為:
RegExp.$1 = xx b xxxx
RegExp.$2 = xxx
在上例中,我們在正規式中加了刮號,符合刮號中的比對條件者,將被設定至 RegExp.$1、RegExp.$2 等變數中,以便後續處理。(以簡化起見,RegExp.$1 可以簡寫成 $1,RegExp.$2 可以簡寫成 $2,依此類推。)
字串方法 功能
str.search(re) 正規式 re 在某個字串 str 出現的位置
str.match(re) 抽取符合規格的部分,並以陣列傳回
str.replace(re, new_part) 代換符合正規式 re 的部分
使用正規表示法及上述的字串方法,我們對字串的處理能力大增,不但可以進行搜尋比對,還可以立刻修改字串(例如:即時修改表單資料),本節將說明這些功能。
若要尋找某個正規式在一個字串的出現位置,可用字串的 search 方法,例如:
str = "現任總統是李輝,李炳輝是金門王的搭檔";
re = /李.輝/;
index = str.search(re);
document.write(index)
將會印出
5
其中 str.search(re) 將會傳回符合 re 的第一個位置(此例為5)。若字串 str 不符合 re,則回傳值為 -1。若只是要判斷輸入字串是否符合某個正規式,也可以使用 re.test(str),這在上一節已經說明過了。
使用字串的 match 方法,可在一個字串中,取出符合某個正規表示式的子字串。在下例中,我們將輸入字串和正規式「/李.輝/g」比對,並將符合部分印出:
str = "現任總統是李輝,李炳輝是金門王的搭檔";
re = /李.輝/g;
found = str.match(re);
document.write(found)
其中「.」可比對任何一個字元。上述程式碼印出結果為:
李輝,李炳輝
善用正規表示式及字串的 replace 方法,就可以對字串進行任意修改。假設有一個字串如下:
str = "現任總統是李輝,李輝是現任總統";
若要將第一個「李輝」代換成「陳水」,印出的結果如下:
現任總統是陳水,李輝是現任總統
若使用正規表示法,其程式碼如下:
str = "現任總統是李輝,李輝是現任總統";
re = /李輝/;
newstr = str.replace(re, "陳水");
document.write(newstr)
現任總統是陳水,李輝是現任總統
在上例中,re 就是一個正規式,字串的 replace 方法將符合正規式的部分代換成「陳水」,並將新字串傳回給變數 newstr。若要將所有的「李輝」改成「陳水」,只需將正規式改成「/李輝/g」就可以了。
處理表單資料時,最常用的資料修改方式就是去除前後的空白。這種例行工作就可以由正規表示法及字串的 replace 方法來輕鬆完成。例如:
中文大名:
在上例中,若按下「檢驗」,JavaScript 即會將所有的空白部分(含中文大五碼)刪除。程式碼如下:
function checkChineseName(UI) {
UI.value = UI.value.replace(/[s ]+/g, ""); // s & 全形空白
}
中文大名:
對於英文的輸入,我們通常要消除字頭及字尾的空白,並將句中的多個空白合成一個空格,例如:
英文大名:
程式碼如下:
function checkEnglishName(UI) {
var str = UI.value;
// get rid of leading and trailing white spaces
str = str.replace(/^[s ]+/g, "");
str = str.replace(/[s ]+$/g, ""); // s & 全形空白
// merge multiple white spaces into one
str = str.replace(/[s ]+/g, " ");
UI.value = str;
}
英文大名:
在正規表示法的比對過程中,所採用的方法是「貪心比對」(Greedy Match),因此會盡量「貪」到越多的字元越好,例如:
str = "fred xxxxx barney";
re = /x+/;
found = str.match(re);
document.write(found)
印出結果為:
xxxxx
在使用「貪心比對」時,會採用「越左越貪」的原則,例如:
str = "a xx b xxxx b xxx d";
re = /a(.*)b(.*)d/;
found = str.match(re);
document.write("RegExp.$1 = "+RegExp.$1+"
")
document.write("RegExp.$2 = "+RegExp.$2+"
")
印出結果為:
RegExp.$1 = xx b xxxx
RegExp.$2 = xxx
在上例中,我們在正規式中加了刮號,符合刮號中的比對條件者,將被設定至 RegExp.$1、RegExp.$2 等變數中,以便後續處理。(以簡化起見,RegExp.$1 可以簡寫成 $1,RegExp.$2 可以簡寫成 $2,依此類推。)
|
up