Javascript 要测试是否只有ASCII字符的正则表达式
我已经尝试过了,但对于UTF-8和ASCII,它都返回true:Javascript 要测试是否只有ASCII字符的正则表达式,javascript,regex,Javascript,Regex,我已经尝试过了,但对于UTF-8和ASCII,它都返回true: console.log(/[^w/]+/.test("abc123")) //true console.log(/[^w/]+/.test("ابت")) //true 我想你的意思是/[^\w]+/,但从我收集的信息来看,你真正想要的是: console.log(/^[\x00-\x7F]+$/.test("abc123")) //true console.log(/^[\x00-\x7F]+$/.test("abc_-8
console.log(/[^w/]+/.test("abc123")) //true
console.log(/[^w/]+/.test("ابت")) //true
我想你的意思是
/[^\w]+/
,但从我收集的信息来看,你真正想要的是:
console.log(/^[\x00-\x7F]+$/.test("abc123")) //true
console.log(/^[\x00-\x7F]+$/.test("abc_-8+")) //true
console.log(/^[\x00-\x7F]+$/.test("ابت")) //false
如果您实际上不想检查完整的ASCII集,可以使用:
console.log(/^[\w]+$/.test("abc123")) //true
console.log(/^[\w]+$/.test("abc_-8+")) //false
console.log(/^[\w]+$/.test("ابت")) //false
关于\x表示法
\xFF
是本例中使用的十六进制表示法(列表),用于范围00
到7F
,以匹配完整的ASCII字符集\x00-\x7F
在功能上与a-z
相同,因为它指定了一个范围,但是我们使用十六进制表示法来实现可靠的范围
\w
匹配“word”字符,这与[a-z0-9\
相同。请注意,编写的正则表达式当前测试字符串是否不完全由w
和/
字符组成。您可能打算执行\w
而不是w/
。请尝试使用^\w+$,您需要强制它匹配完整的字符串\w应该只匹配拉丁语1。您可以使用\W进行反向匹配。这个/^[^a-zA-Z0-9]+$/
@Sami-有很多ASCII字符不是字母或数字。@Sami如昆廷所述,这不是完整的ASCII字符集,请参阅我的更新版本answer@Samiconsole.log(/^[\x00-\x7F]+$/.test(“ابت”))
不返回true-什么是您从中得到的不期望的true?如果OP确实意味着检查普通ASCII:有一个表达式:/^[[:ASCII:]+$/