先来说说正则表达式能不能为空这个事儿吧。其实啊,如果你想让输入框“不空着”,简单地用\S就能搞定了!\S是匹配非空白字符的意思,也就是说,输入里必须得有个合法“非空白”的东西才算通过。比如下面的JS代码:
var reg = /\S/;
reg.test($("value").val());
很简单吧,只要输入框里有内容,哪怕是字母、数字,只要不是空格啥的,就能过。不过如果你想更严格,比如完全不能有空格,那就得用[^ ],意思是不允许出现空格了。
话说正则表达式其实是超有用的家伙,它用一堆特殊字符组成的“规则字符串”,帮你判断输入值是不是符合要求。就像你在跟字符串玩“抓猫”游戏,专门捉那些符合你定义规则的小伙伴。

下面这块真是干货满满,咱们分点来说,继续带你深入了解怎么让输入框绝对不能空,且不能输空格啥的。
function myfunction() {
var a = $("text1").val();
if ($.trim(a) == "") {
alert("不能为空!");
return false;
}
}
这里用$.trim()是为了去除输入前后的空格,保证用户提交的值真不是空的。
"\s"代表包括空格、制表符等各种不可见字符,如果你只想禁止空格,用"[^ ]+"更合适,意思是匹配多个非空格字符。
var reg = /^\s*$/g;
// 判断输入是不是空字符串或全空白符
if(name.value=="" || reg.test(name.value)){
// 这里处理输入为空或者仅有空白的情况
}
[0-9]+[a-zA-Z]+[^ ]+其实,你要是像我一样细节控,用[^ ]+就能保证整个字符串里完全没有空格,打中你想要的点。
var reg = /^.{1,20}$/;
var str = "";
reg.test(str);
这边意思是:长度至少1,最多20个,任意字符都能,包括字母数字啥的。
js定义正则有两种方式:
new RegExp("pattern")/pattern/但千万要注意转义,尤其是用构造函数的时候,万一忘了转义,嘿嘿,正则就不灵光了。
如果你想屏蔽一切不可见字符,别只盯着空格。用\s直接来个全包;如果只是不想碰空格,[^ ]+秒变利器。

\S到底是啥意思?嘿,这个\S超级好用,它其实就是匹配任何非空白字符,也就是说只要不是空格、制表符、换行啥的,就能匹配。你可以想象成“我是点名所有不爱占位的字符!”那种,很适合用来检测输入框里真有内容,别让它空荡荡的。
因为构造函数模式下,正则表达式是以字符串形式传入,双反斜杠你得特别注意。比如你想匹配“\S”,写成"\\S"才对,否则就会被误解。稍微粗心点它就罢工了,超级让人抓狂!总结一句话,“转义是魔鬼!”
你可以用像/^[^\s]+$/这样滴表达式,意思是“从头到尾都不能包含空白符”,它不允许输入空格、制表符等等。再结合JS中$.trim()去除前后空格,再判断长度是否为0,这样双管齐下,稳稳的。
[^ ],有的用\S,两者区别是什么?哈哈,其实有点意思呢。\S是匹配所有非空白字符,包括空格、制表符、换行符之外的都算非空白;而[^ ]特指不能含有“空格”而已,它不管制表符啥的。你要是想更严苛,根本不留空白,选\S。只怕空格,[^ ]够呛!两个兄弟,根据你需求随便挑!
添加评论