ASCII字符正则表达式测试

5
我尝试了这个方法,但它对UTF-8和ASCII都返回true:
 console.log(/[^w/]+/.test("abc123")) //true
 console.log(/[^w/]+/.test("ابت")) //true

请注意,您当前编写的正则表达式测试的是您的字符串不完全由 w/ 字符组成。您可能想要使用 \w 而不是 w/ - apsillers
尝试使用^\w+$,你需要强制它匹配完整的字符串。\w只应匹配Latin1字符集。您可以使用\W进行反向匹配。 - jishi
1个回答

16

我认为你想要的是 /[^\w]+/,但从我的理解来看,你实际需要的是:

console.log(/^[\x00-\x7F]+$/.test("abc123")) //true
console.log(/^[\x00-\x7F]+$/.test("abc_-8+")) //true
console.log(/^[\x00-\x7F]+$/.test("ابت")) //false

如果您实际上并不需要检查完整的ASCII字符集,您可以使用以下代码:

```python import string print(string.ascii_letters + string.digits + string.punctuation) ```

console.log(/^[\w]+$/.test("abc123")) //true
console.log(/^[\w]+$/.test("abc_-8+")) //false
console.log(/^[\w]+$/.test("ابت")) //false

关于 \x 记法

\xFF 是一个十六进制记法(列表在这里),用于匹配完整的 ASCII 字符集范围 007F\x00-\x7F 在功能上与 a-z 相同,表示一个范围,但我们使用十六进制记法进行可靠的范围匹配。

\w 匹配“单词”字符,与 [a-z0-9_] 相同。


这个正则表达式/^[^a-zA-Z0-9]+$/怎么样? - Sami
2
@Sami - 有很多ASCII字符不是字母或数字。 - Quentin
1
@Sami console.log(/^[\x00-\x7F]+$/.test("ابت")) 没有返回 true - 你从中得到了意料之外的 true 吗? - MDEV
1
如果 OP 确实想要检查 ASCII:有一个表达式可以做到这一点:/^[[:ascii:]]+$/ - Jongware
失败原因:sdfsdfsक...末尾的一个字符导致失败。 - cosmoloc
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接