javascript中使用Regex實現刪除字串中的前後空格

來源:互聯網
上載者:User

執行個體 複製代碼 代碼如下:<script>
var str=" yexj00 ";
str=str.replace(/^s*|s*$/g,'');
alert(str);
</script>

執行個體
模仿RTrim: 複製代碼 代碼如下:<script>
var str="yexj00 ";
str=str.replace(/s*$/g,'');
alert(str);
</script>

執行個體

代碼以及測試代碼如下: 複製代碼 代碼如下:<script type="text/javascript">
//刪除字串兩側的空白字元。
function trim(str){
return str.replace(/^s+|s+$/g,'');
}
//刪除字串左側的空白字元。
function ltrim(str){
return str.replace(/^s+/g,'');
}
//刪除字串右側的空白字元。
function rtrim(str){
return str.replace(/s+$/g,'');
}
//以下為測試代碼
var trimTest = " 123456789 ";
//前後各有一個空格。
document.write('length:'+trimTest.length+'<br />');
//使用前
document.write('ltrim length:'+ltrim(trimTest).length+'<br />');
//使用ltrim後
document.write('rtrim length:'+rtrim(trimTest).length+'<br />');
//使用rtrim後
document.write('trim length:'+trim(trimTest).length+'<br />');
//使用trim後
</script>

測試的結果如下: 複製代碼 代碼如下:length:11
ltrim length:10
rtrim length:10
trim length:9

用jsRegex刪除字串前後空格 複製代碼 代碼如下:String.prototype.trim=function(){
var reSpace=/^\s*(.*?)\s*$/;
return this.replace(reSpace,”$1″);
};

讓我們分析一下第二行的Regex
^ 行開始
\s*
匹配字元前面的所有空格,貪婪模式重複
(.*?)
擷取的群組,勉強模式重複匹配任一字元,也就是我們最終需要(去掉前後空格後)的字元,這個不是很好理解(我認為)
第一:我原來認為在擷取的群組內也應該判斷第一個字元應該不可為空格即寫成([^\s+])的形式,但這是完全沒有必要的因為擷取的群組前面的\s*已經能捕獲開頭的所有的空白字元了,你認為的擷取的群組的字元開始範圍與Regex匹配的字元範圍是不一樣的,汗~有點說不清楚了,呵呵
第二:其中?的作用,他的作用就是勉強模式重複前面的字元,什麼意思呢?就是如果我用(.*a)去匹配aaaaaaa字串的結果就是(aaaaaaa)源字串這叫貪婪模式,如果用(.*?a)去匹配aaaaaaa的話他就會先匹配第一a,然後是第二個a,然後是第三個a…….這就叫勉強模式比對有的地方也叫懶惰模式比對。通俗一點(大家都喜歡通俗的解釋,呵呵)就是前者是從後往前去匹配儘可能多的字元,而後者是從前往後匹配
第三:我們還要不要去關心擷取的群組中後面的空格呢?因為擷取的群組中的”.”也是可以匹配空格的,先前我也是考慮這個問題大部分時間都浪費在這上面了.其實這和考慮要不要排除擷取的群組前面的空格一樣的道理,後面的\s*已經給我們處理了
\s*匹配字元後面的空格
———————————————————分割線——————————————————–
自訂三個trim()函數來過濾字串左右兩邊的空格。 複製代碼 代碼如下://js去除空格函數
//此處為string類添加三個成員
String.prototype.Trim = function(){ return Trim(this);}
String.prototype.LTrim = function(){return LTrim(this);}
String.prototype.RTrim = function(){return RTrim(this);}
//此處為獨立函數
function LTrim(str)
{
var i;
for(i=0;i<str.length;i++)
{
if(str.charAt(i)!=” “&&str.charAt(i)!=” “)break;
}
str=str.substring(i,str.length);
return str;
}
function RTrim(str)
{
var i;
for(i=str.length-1;i>=0;i–)
{
if(str.charAt(i)!=” “&&str.charAt(i)!=” “)break;
}
str=str.substring(0,i+1);
return str;
}
function Trim(str)
{
return LTrim(RTrim(str));
}

———————————————————分割線——————————————————– 複製代碼 代碼如下:<script type=”text/javascript”>
function trim(str){ //刪除左右兩端的空格
return str.replace(/(^\s*)|(\s*$)/g, “”);
}
function ltrim(str){ //刪除左邊的空格
return str.replace(/(^\s*)/g,”");
}
function rtrim(str){ //刪除右邊的空格
return str.replace(/(\s*$)/g,”");
}
</script>
function checkSubmit(){
if(confirm(“是否確認儲存資料?”)){
var ab = document.getElementById(“name”).value;
var dj = document.getElementById(“dj”).value;
var xy = ab.replace(/(^\s*)|(\s*$)/g, “”);
if(xy!=”"&&dj!=”"){
document.dwbzjlspb.action = “”;
document.dwbzjlspb.submit();
return true;
}else{
alert(“單位名稱或擬申報等級不可為空!”);
}
}else{
return false;
}
};

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.