gpt4 book ai didi

regex - 如何为包含字母数字和特殊字符的输入编写匹配项

转载 作者:行者123 更新时间:2023-12-02 15:36:30 26 4
gpt4 key购买 nike

我的matches有问题。我有一个字段,应该接受一个可以包含alphanumeric and special characters的任意组合的值。当输入为1) combination of alphanumeric and special characters, and 2) alphanumeric时,我有一个可以正常工作的代码。但是,如果输入包含1) number and special characters ONLY without alphabet or 2) alphabet and special characters ONLY without number的组合,则我的matches出现错误。我想要做的是创建一个matches,它最适合以下输入组合:

1) alphabet+number
2) alphabet+special character
3) alphabet+number+special character
4) number+special character

这是我的代码:
matches: /^(?=.*[0-9]+.*)(?=.*[a-zA-Z]+.*)[0-9a-zA-Z_\[\]\\\^\$\.\|\?\*\+\(\)~!@#%&-=]{8,}$/

我需要你的建议!
谢谢!

最佳答案

这是因为您的积极前瞻要求同时显示[0-9][a-zA-Z]

尝试将其简化为一个前瞻,它仅指定存在[0-9][a-zA-Z]中的至少一个:

matches: /^(?=.*[0-9a-zA-Z])[0-9a-zA-Z_\[\]\\\^\$\.\|\?\*\+\(\)~!@#%&-=]{8,}$/

此外,您可以通过将lookahead中的 .*修改为 [^0-9a-zA-Z]*来提高正则表达式的效率:这样,lookahead会与它找到的第一个字母数字匹配,然后停止,从而防止不必要的扫描:
matches: /^(?=[^0-9a-zA-Z]*[0-9a-zA-Z])[0-9a-zA-Z_\[\]\\\^\$\.\|\?\*\+\(\)~!@#%&-=]{8,}$/

关于regex - 如何为包含字母数字和特殊字符的输入编写匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9627991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com