我正在尝试确保字符串没有任何奇怪的ASCII个字符。
我正在尝试使用字符类和否定。
var tester =/[^\x00-\x001F\x007\x080-\xA1]+/i;
所以:00-1F,07之间没有ASCII字符;或80-A1应该存在。其他一切都应该没问题。
经过很长一段时间后我回到正则表达式......正则表达式无效。我想要一个像“你好”的字符串来传递一个字符串,如“†ack!”失败。或者,我的JavaScript / jQuery代码错了吗?
代码:
var tester2 = /^[^\x00-\x1f\x80-\xa1]+$/;
$('#testButton').click(function(){
var text1 = $('#ackInput').val();
console.log("text: " + text1);
var allowed = tester2.test(text1);
var feedback = "allowed?" + allowed;
console.log(feedback);
$('#errorTestInputAllowedChars').text(feedback);
});
答案 0 :(得分:1)
您需要确保整个字符串匹配:
var tester = /^[^\x00-\x001F\x007\x080-\xA1]+$/i;
\x
符号对我来说似乎不正确,这在我尝试时有效:
var tester = /^[^\u0000-\u001F\u0080-\u00A1]+$/i;
答案 1 :(得分:1)
答案 2 :(得分:0)
您所需范围的十六进制编码不正确。你想要这个
[^\x00-\x1f\x80-\xa1]
注意我遗漏了\x07
,因为它已经在\x00-\x1f
修改强>
正如Pointy指出的那样,你需要否定整个字符串。