實例
<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
用js正則表達式刪除字符串前后空格
String.prototype.trim=function(){
var reSpace=/^/s*(.*?)/s*$/;
return this.replace(reSpace,”$1″);
};
讓我們分析一下第二行的正則表達式
^ 行開始
/s*
匹配字符前面的所有空格,貪婪模式重復
(.*?)
捕獲組,勉強模式重復匹配任意字符,也就是我們最終需要(去掉前后空格后)的字符,這個不是很好理解(我認為)
第一:我原來認為在捕獲組內也應該判斷第一個字符應該不能為空格即寫成([^/s+])的形式,但這是完全沒有必要的因為捕獲組前面的/s*已經能捕獲開頭的所有的空格字符了,你認為的捕獲組的字符開始范圍與正則表達式匹配的字符范圍是不一樣的,汗~有點說不清楚了,呵呵
第二:其中?的作用,他的作用就是勉強模式重復前面的字符,什么意思呢?就是如果我用(.*a)去匹配aaaaaaa字符串的結果就是(aaaaaaa)源字符串這叫貪婪模式,如果用(.*?a)去匹配aaaaaaa的話他就會先匹配第一a,然后是第二個a,然后是第三個a…….這就叫勉強模式匹配有的地方也叫懶惰模式匹配。通俗一點(大家都喜歡通俗的解釋,呵呵)就是前者是從后往前去匹配盡可能多的字符,而后者是從前往后匹配
第三:我們還要不要去關心捕獲組中后面的空格呢?因為捕獲組中的”.”也是可以匹配空格的,先前我也是考慮這個問題大部分時間都浪費在這上面了.其實這和考慮要不要排除捕獲組前面的空格一樣的道理,后面的/s*已經給我們處理了
/s*匹配字符后面的空格
―――――――――――――――――――分割線――――――――――――――――――
主站蜘蛛池模板:
二连浩特市|
德保县|
阳信县|
乳山市|
博兴县|
墨脱县|
开鲁县|
淮安市|
潮安县|
南充市|
广元市|
和硕县|
遂宁市|
洪雅县|
林州市|
平潭县|
曲周县|
巴塘县|
左权县|
东辽县|
通州区|
莱阳市|
彝良县|
应用必备|
双峰县|
岗巴县|
健康|
博湖县|
铜川市|
娄底市|
广德县|
濉溪县|
黄山市|
察雅县|
南雄市|
安远县|
兴义市|
白河县|
漳州市|
余干县|
大同县|