使用正则表达式测试字符串中的特定ASCII字符

Testing a string for specific ASCII characters using a regular expression

本文关键字:ASCII 字符 正则表达式 测试 字符串      更新时间:2024-06-18

我正在努力确保字符串中没有任何奇怪的ASCII字符。

我正在尝试使用字符类和否定。

 var tester =/[^'x00-'x001F'x007'x080-'xA1]+/i;

因此:00-1F、07之间没有ASCII字符;或80-A1。其他一切都应该很好。

离开很长一段时间后,我又回到了正则表达式。。。正则表达式不起作用。我希望像"hello"这样的字符串通过,而像"†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);
    });

jsFiddle上的一个条目位于http://jsfiddle.net/jillrenee42/WE79e/2/.

您需要确保整个字符串匹配:

var tester = /^[^'x00-'x001F'x007'x080-'xA1]+$/i;

'x表示法对我来说似乎不正确,当我尝试它时,它就起作用了:

var tester = /^[^'u0000-'u001F'u0080-'u00A1]+$/i;

在Javascript中,六进制代码是两位代码,因此以下代码适用于您:

/^[^'x00-'x1F'x07'x80-'xFF]+$/

Javascript Regex参考

所需范围的十六进制编码不正确。你想要这个代替

[^'x00-'x1f'x80-'xa1]

注意,我省略了'x07,因为它已经在'x00-'x1f 的范围内了


编辑

正如Pointy所指出的,您将需要否定整个字符串。