我知道在Stack-overflow上有几个这样的问题,但我似乎无法从已经发布的问题中得到一个直接的答案。如果有人可以帮助我,请向前看。
我想验证字符串&如果满足以下条件,则返回TRUE
示例:
var demo1="23dsfXXXa32_XXXX" // Valid, should returns TRUE
var demo2="_23dsfXXXa32_XXXX" // Invalid,should returns FALSE
var demo3= "23dsfXXXa32XXXX_" //invalid,should returns FALSE
var demo4= "_" //invalid,should returns FALSE
var demo5= "&sdfsa_XX";// returns false
尝试:FIDDLE
if(/^[a-zA-Z0-9_ ]*$/.test(demo1) == true) {
alert('Valid String');
}
结果:无法按预期运行
答案 0 :(得分:0)
既然你已经说过要求字符在那里,一种方法是使用正则表达式,每一端都有一个否定的字符类,其中一个是非否定的中间:
var rex = /^[^_]+[_][^_]+$/;
只处理下划线;在那里为所有三个字符类添加其他“特殊”字符。
如何运作:
^
匹配字符串[^_]+
在课程[_]
只需要 类中的一个字符[^_]+
在课程$
匹配字符串结尾答案 1 :(得分:-1)
您可以使用indexOf
来验证它不在第一个或最后一个位置并split
来查看它是否仅存在一次,从而简化它。这通常比正则表达式更快。</ p>
function checkString(str){
return str.indexOf("_") !== 0 && str.indexOf("_") !== str.length-1 && str.split("_") === 2;
}