gpt4 book ai didi

regex - 如何替换正则表达式中的前瞻?

转载 作者:行者123 更新时间:2023-12-04 14:17:44 26 4
gpt4 key购买 nike

我写了一个正则表达式来验证输入字符串。它必须至少有 8 个字符(由字母数字和标点字符组成),并且必须至少有一个数字和一个字母字符。所以我想出了正则表达式:

^(?=.*[0-9])(?=.*[a-zA-Z])[a-zA-Z0-9-,._;:]{8,}$

现在我必须用不支持前瞻的语言重写这个正则表达式,我应该如何重写那个正则表达式?

有效输入是:
1foo,bar
foo,bar1
1fooobar
foooobar1
fooo11bar
1234x567
a1234567

无效输入:
fooo,bar
1234-567
.1234567

最佳答案

有两种方法。一种是编写一个处理所有可能选项的表达式:

^[a-zA-Z][0-9][a-zA-Z0-9-,._;:]{6,}$
|
^[a-zA-Z][a-zA-Z0-9-,._;:][0-9][a-zA-Z0-9-,._;:]{5,}$
|
^[a-zA-Z][a-zA-Z0-9-,._;:]{2}[0-9][a-zA-Z0-9-,._;:]{4,}$

等等。这是一个组合的噩梦,但它会起作用。

一个更简单的方法是使用两个表达式验证相同的字符串两次:
^[a-zA-Z0-9-,._;:]{8,}$          # check length and permitted characters


[a-zA-Z].*[0-9]|[0-9].*[a-zA-Z]  # check required characters

编辑:@briandfoy 正确地指出,单独搜索每个必需的字符会更有效:
[a-zA-Z]                         # check for required alpha


[0-9]                            # check for required digit

关于regex - 如何替换正则表达式中的前瞻?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8306521/

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