Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于检测某些ASCII代码的正则表达式_Regex - Fatal编程技术网

Regex 用于检测某些ASCII代码的正则表达式

Regex 用于检测某些ASCII代码的正则表达式,regex,Regex,我不太擅长正则表达式,我目前正在使用以下方法来防止某些ASCII码(40,38,9,13,27)被放入输入中: if(str.includes("(")) etc 有人能帮我吗?我找到的唯一一个正则表达式阻止了所有ASCII代码,这不是我想要的功能 /^[\x00-\x7F]*$/ 首先,您需要将这些十进制字符代码转换为十六进制,因为您使用的是十六进制转义序列。然后,可以创建与这些字符匹配并与全局标志匹配的字符类: 40 = \x28 38 = \x26 如果输入包含以下任一字符,则匹配:

我不太擅长正则表达式,我目前正在使用以下方法来防止某些ASCII码(40,38,9,13,27)被放入输入中:

if(str.includes("(")) etc
有人能帮我吗?我找到的唯一一个正则表达式阻止了所有ASCII代码,这不是我想要的功能

/^[\x00-\x7F]*$/

首先,您需要将这些十进制字符代码转换为十六进制,因为您使用的是十六进制转义序列。然后,可以创建与这些字符匹配并与全局标志匹配的字符类:

40 = \x28
38 = \x26
如果输入包含以下任一字符,则匹配:

/[\x28\x26]/g
假设您使用的是JavaScript,则可以在浏览器控制台中进行测试:

/[\x28\x26]/g.test('asldkf(jals')
> true
/[\x28\x26]/g.test('asldkfjals')
> false

上面的正则表达式匹配所有ASCII字符的原因是因为它是一个范围(由转义序列之间的
-
表示)

正则表达式将匹配这些字符,您是否尝试匹配除该范围内的字符以外的任何字符?我只想匹配那些字符,而不是9,ASCII十进制码中的13和27个不可打印字符?40是
,38是
&
,其他的是什么?(,&,TAB,CR和ESC谢谢你的回答!我这样做了,但它不起作用(和/或给我假阳性):/[\x28\x26\x9\xD\x1B]/g.test(“ESC”)@David您的测试正在检查字符E、S和C。转义码是十进制的27,十六进制的1B,因此转义序列是
\x1B
,您将无法使用字符串
ESC
进行测试。您必须使用
\x1B
进行测试。我也不确定您是否会遇到许多包含转义键的字符代码,但这取决于它们来自何处,等等。