清空字符串的空格(正则表达式)

/\s+/g和/\s/g的区别

 

正则表达式/\s+/g和/\s/g,目的均是找出目标字符串中的所有空白字符,但两者到底有什么区别呢?

我们先来看下面一个例子:

let name = 'ye wen jun';
let ans = name.replace(/\s/g, ''); // 'yewenjun'
let ans2 = name.replace(/\s+/g, ''); // 'yewenjun'
从上面那个例子我们看到结果没有区别,那我们在换个例子看看

let name = 'ye wen jun';
let ans = name.replace(/\s/g, '#'); // "ye###wen####jun"
let ans2 = name.replace(/\s+/g, '#'); // "ye#wen#jun"
现在可以很清楚的可以看到,+的意思就是从遇到第一个匹配的字符起,继续匹配,直到匹配失败,把这段匹配到的字符替换为#,

而不带+的是把匹配到的字符一个一个替换为#

 

js里elm.value.replace(/[\s ]+/g, ''),是什么意思,需要详细解释,比如/[\s]是什么意思
 
elm是表单吧.将elm表单的值中的空白字符替换.
replace字符串的替换方法.
/[\s ]+/g正则表达式./xxxx/两个斜杠表示这个是正则表达式.后面的g表示匹配全部(即替换全部),[\s]表示匹配空白字符(空格等什么的),+号表示至少有一个.更详细的用法请查看正则表达式.

 

去除空格,只输入字符串

onkeyup="this.value=this.value.replace(/\s/g,'')"

onafterpaste="this.value=this.value.replace(/\s/g,'')"

 

只允许输入数字

onkeyup="this.value=this.value.replace(/\D/g,'')" 
onafterpaste="this.value=this.value.replace(/\D/g,'')"

onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"

正则表达式

 
复制代码
只能输入纯数字

onkeyup="this.value=this.value.replace(/\D/g,'')";
onafterpaste="this.value=this.value.replace(/\D/g,'')";

只能输入中文
 onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" ;onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
复制代码
开头不能为0,不能有小数点 
onkeyup="this.value=this.value.replace(/\D|^0/g,'')" onafterpaste="this.value=this.value.replace(/\D|^0/g,'')"
开头不能为0
复制代码
<div class="input-choseNum">
<input type="number" id="inp-chooseNum" oninput='this.value=this.value.replace(/^[0]+[0-9]*$/gi,"")' maxlength="5" />
<span class="sureChoose">确定</span><span class="closeChoose">取消</span>
</div>

 

posted @ 2023-06-14 11:34  前端白雪  阅读(361)  评论(0编辑  收藏  举报