作者:轶乐-love万 | 来源:互联网 | 2023-09-25 20:10
我想创建一个正则表达式,以防止输入使用0和9形成的数字0000 0000
或99999 99999
,空格可以出现在形成的数字中的任何位置。
我已经尝试过this,它的工作准确率是80%。虽然它也允许使用0和9的组合形成数字,例如。 0000 9999
对于这个问题,我需要指导以防止输入0和9的组合。
更新:
我试图防止使用0
或9
换成999999999
9999 9999
9999999 9
9 9999999
和{{1} } 000000000
0000 0000
0000000 0
是不可接受的输入。
但是,可以接受0 0000000
909090909
009 00990
000 99999
999900000
123456879
等。
谢谢
我的猜测是,也许这两个积极的超前陈述(检查0和9)对于解决问题可能有所帮助:
(?=.*0)(?=.*9)
例如,基于此我们可以编写一些简单的表达式,例如:
(?=.*0)(?=.*9)^[09]+\s?[09]+$
RegEx Demo 1
如果您想允许这些样本,
123456879
555228899
没有零或九,那么可能是一个交替
(?=.*0)(?=.*9)^[09]+\s?[09]+$|(?=.*[0-8])(?=.*[1-9])^[0-9]+\s?[0-9]+$
将是一个选择。
RegEx Demo 2
如果您想简化/更新/探索表达式,请在regex101.com的右上角进行解释。如果您有兴趣,可以观看匹配的步骤或在this debugger link中进行修改。调试器演示了a RegEx engine如何逐步使用一些示例输入字符串并执行匹配过程的过程。
RegEx电路
jex.im可视化正则表达式:
,
您可以使用正则表达式,对包含全零和空格或全九和空格的字符串使用负前瞻,然后在数字和空格字符串上进行匹配,即
matrix[0][0] = ' ';
matrix[0][1] = ' ';
matrix[0][2] = '*';
matrix[0][3] = ' ';
matrix[0][4] = '*';
matrix[0][5] = '*';
matrix[0][6] = '*';
matrix[1][0] = ' ';
matrix[1][1] = ' ';
matrix[1][2] = '*';
matrix[1][3] = ' ';
matrix[1][4] = ' ';
matrix[1][5] = ' ';
matrix[1][6] = '*';
matrix[2][0] = ' ';
matrix[2][1] = ' ';
matrix[2][2] = '*';
matrix[2][3] = ' ';
matrix[2][4] = '*';
matrix[2][5] = '*';
matrix[2][6] = '*';
matrix[3][0] = ' ';
matrix[3][1] = ' ';
matrix[3][2] = '*';
matrix[3][3] = ' ';
matrix[3][4] = '*';
matrix[3][5] = ' ';
matrix[3][6] = ' ';
matrix[4][0] = ' ';
matrix[4][1] = ' ';
matrix[4][2] = '*';
matrix[4][3] = ' ';
matrix[4][4] = '*';
matrix[4][5] = '*';
matrix[4][6] = '*';
Demo on regex101
如果您要强制数字中只能有一个空格,请为此添加正向前瞻:
^(?![0 ]+$)(?![9 ]+$)([\d ]+)$
Demo on regex101