【发布时间】:2018-03-10 18:16:32
【问题描述】:
我已经创建了一个 JS fiddle https://jsfiddle.net/95r110s9/#&togetherjs=Emdw6ORNpc
HTML
<input id="landlordstreetaddress2" class="landlordinputs" onfocusout="validateinputentries()" />
JS
validateinputentries(){
landlordstreetaddress2 = document.getElementById('landlordstreetaddress2').value;
goodcharacters = "/^[a-zA-Z0-9#.,;:'\s]+$/gi";
for (var i = 0; i < landlordstreetaddress2.length; i++){
if (goodcharacters.indexOf(landlordstreetaddress2.charAt(i)) != -1){
console.log('Character is valid');
}
}
}
它从输入中提取值并运行 indexOf 正则表达式,其中包含 A-Z a-z 和 0-9 以及一些附加字符。
问题是它可以与 BCDEFG...etc 和 12345...etc 的条目一起使用,但是当我输入“A”或“Z”或“0”或“1”时,它返回不正确。
我需要它返回与 0123456789、ABCDEF...XYZ 和 abcdef...xyz 相同的内容
我应该指出,以下确实按预期工作:
var badcharacters = "*|,\":<>[]`\';@?=+/\\";
badcharacter = false;
//firstname
for (var i = 0; i < landlordfirstname.value.length; i++){
if (badcharacters.indexOf(landlordfirstname.value.charAt(i)) != -1){
badcharacter = true;
break;
}
if(landlordfirstname.value.charAt(0) == " "){
badcharacter = true;
break;
}
}
【问题讨论】:
-
呃,那不是正则表达式。那是一个带有正则表达式内容的字符串。
indexOf是一个字符串方法,而不是一个正则表达式。 -
代码似乎也成为The Horror of Implicit Globals 的牺牲品(披露:这是我贫血的小博客上的帖子)。声明你的变量。
标签: javascript regex indexof