如何在正则表达式中替换前瞻?
发布时间:2020-12-13 22:53:28 所属栏目:百科 来源:网络整理
导读:我写了一个验证输入字符串的正则表达式.它必须至少有8个字符长度(由字母数字和标点字符组成),并且必须至少有一个数字和一个字母字符.所以我想出了正则表达式: ^(?=.*[0-9])(?=.*[a-zA-Z])[a-zA-Z0-9-,._;:]{8,}$ 现在我必须用不支持前瞻的语言重写这个正则
我写了一个验证输入字符串的正则表达式.它必须至少有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,._;:]{2}[0-9][a-zA-Z0-9-,._;:]{4,}$ 这是一个组合的噩梦,但它会起作用. 一种更简单的方法是使用两个表达式两次验证相同的字符串: ^[a-zA-Z0-9-,}$ # 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |