JavaScript正则表达式与自定义函数实现字符串去空格详解
本文详细介绍在JavaScript中利用正则表达式删除字符串前后空格的方法,涵盖trim、ltrim和rtrim的实现。同时深入解析正则表达式中的贪婪与勉强模式,并提供基于原型链和独立函数的自定义去空格代码示例及测试验证。
JavaScript正则表达式基础去空格示例
示例
代码如下:
<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)匹配,则先匹配第一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;
}
}; JavaScript异步发送HTTP请求时怎么优雅地处理错误
2026-11-05 17:10:44
5款主流JS在线运行工具对比:CodePen、JSFiddle与StackBlitz怎么选
2026-11-05 17:04:04
JavaScript入门书籍避坑:这些书不适合初学者
2026-11-05 16:31:15
JS使用Math.round实现保留两位小数的原理与代码
2026-11-05 15:35:55
JavaScript 原生 Date 对象怎么实现日期加减
2026-11-05 14:30:00
