我目前正在使用这个正则表达式 ^[A-Z0-9 _]*$
来接受字母、数字、空格和下划线。我需要修改它以在字符串中的某处至少需要一个数字或字母。任何帮助,将不胜感激!
这将用于验证我的网站的用户名。我实际上想支持尽可能多的字符,但只是想确保我防止代码注入,并且字符对所有用户都能正常显示。所以我绝对愿意接受支持更广泛字符集的正则表达式验证建议。
原文由 makeee 发布,翻译遵循 CC BY-SA 4.0 许可协议
我目前正在使用这个正则表达式 ^[A-Z0-9 _]*$
来接受字母、数字、空格和下划线。我需要修改它以在字符串中的某处至少需要一个数字或字母。任何帮助,将不胜感激!
这将用于验证我的网站的用户名。我实际上想支持尽可能多的字符,但只是想确保我防止代码注入,并且字符对所有用户都能正常显示。所以我绝对愿意接受支持更广泛字符集的正则表达式验证建议。
原文由 makeee 发布,翻译遵循 CC BY-SA 4.0 许可协议
继续并指出这一点,而不是重复使用这些:
[A-Za-z0-9 _]
[A-Za-z0-9]
我有两个(希望更好)替代这两个:
[\w ]
[^\W_]
第一个匹配任何单词字符(字母数字和 _
,以及 Unicode)和空格。第二个匹配任何 非 单词字符或下划线(仅限字母数字,以及 Unicode)。
如果您不想进行 Unicode 匹配,请坚持使用其他答案。但这些在眼睛上看起来更容易(在我看来)。在撰写本文时采用“首选”答案并使用较短的正则表达式可以得到:
^[\w ]*[^\W_][\w ]*$
也许更具可读性,也许更少。当然更短。你的选择。
编辑:
请注意,我在这里假设使用 Perl 风格的正则表达式。您的正则表达式引擎可能支持也可能不支持像 \w 和 \W 这样的东西。
编辑 2:
用有人链接的 JS 正则表达式测试器测试了我的,一些基本示例工作正常。没有做任何广泛的事情,只是想确保 \w 和 \W 在 JS 中工作正常。
编辑 3:
在尝试使用 JS regex 测试器站点测试一些 Unicode 后,我发现了问题:该页面使用 ISO 而不是 Unicode。难怪我的日语输入不匹配。哦,那应该不难解决:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
或者。就 JavaScript 而言,我不知道应该做什么,但我相信这并不难。
原文由 Chris Lutz 发布,翻译遵循 CC BY-SA 2.5 许可协议
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
您只需要指定您当前的 RE,然后是一个字母/数字,然后是您当前的 RE:
由于您现在已经声明它们是 Javascript RE,因此 这里 有一个有用的站点,您可以在其中针对输入数据测试 RE。
如果你也想要小写字母: