regex - 验证字符串是否仅包含 ASCII 字符和数字

标签 regex bash

我这样做是为了验证用户名:

if [[ "$username" =~ ^[a-z][_a-z0-9]{2,17}$ ]]; then

但实际上,包含 é、ç、à 等 unicode 字符的用户名是被接受的。 我应该使用什么正则表达式类来将字符串限制为仅 ascii 字母(a、b、c、d ... z)?

最佳答案

bullet-proof 方法是简单地将 [a-z] 拼写为 [abcdefghijklmnopqrstuvwxyz]。那里!自 1970 年 1 月 1 日 00:00:00 以来,没有混淆语言环境或有趣的字符类,并且在任何 shell 上都受支持。面向 future ,无论您的操作系统供应商、外壳供应商、Unix 标准化流程或 BOFH 认为什么很酷。

有一个额外的变量lc比如

lc=abcdefghijklmnopqrstuvwxyz

正则表达式甚至变得可读:

[$lc][_0-9$lc]{2,17}

这就是高度健壮和可移植的 configure 脚本所做的。

关于regex - 验证字符串是否仅包含 ASCII 字符和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16731455/

相关文章:

python - 使用正则表达式匹配单词 (Python 3)

从 R 中的字符串中删除括号和文本

macos - 使用 Bash 解析 ifconfig 以获取当前 IP 地址(wifi 或以太网)

linux - 用 sed -i 替换文件中的变量

linux - Unix 中 ls -lsh 中的“总计”

bash - 如何检查 Mac OSX 中可用的 shell?

PHP。替换字符串中的命名组

Python - 使用 RegEx 操作字符串

regex - 如何使用正则表达式验证用户名?

bash - 寻找 。 -执行 echo {}\; = `-exec' 缺少参数