如何在JavaScript中检测变量是否包含数字?
检测字符串是否包含数字的正确方法
你写的代码里有两个关键问题导致失效:
- JavaScript里没有
preg_match函数,这是PHP的专属语法,用错了语言API - 第二个正则的逻辑完全反了:
/^([a-zA-Z ]+)$/是匹配只有字母和空格的字符串,!match会在字符串包含非字母空格字符时触发,但你要的是没有数字时提示,逻辑搞反了,而且这个正则也不符合地址的实际情况(地址通常会有连字符、逗号等其他字符)
正确的做法是直接检测字符串中是否存在数字,下面两种方式都可以:
方法1:用RegExp.test()(推荐,性能更优)
这个方法直接返回布尔值,判断是否存在数字:
var adressevalidation = document.getElementById("adresse").value; console.log(adressevalidation); // 检测地址是否不含数字 if (!/\d/.test(adressevalidation)) { document.getElementById("myadresse").innerHTML = "缺少门牌号"; document.getElementById("adresse").style.backgroundColor = "red"; }
方法2:用String.match()
如果匹配到数字会返回匹配数组,没匹配到则返回null,通过判断null即可:
var adressevalidation = document.getElementById("adresse").value; console.log(adressevalidation); if (!adressevalidation.match(/\d/)) { document.getElementById("myadresse").innerHTML = "缺少门牌号"; document.getElementById("adresse").style.backgroundColor = "red"; }
补充说明:如果要兼容带特殊格式的门牌号(比如"12A"这种带字母的),上面的正则也能正常检测到数字;如果需要更严格的门牌号规则,可以根据需求调整正则,但基础的数字检测用/\d/就足够。
内容的提问来源于stack exchange,提问作者pierre
相关产品推荐
相关产品推荐

