我需要正则表达式
az,AZ,允许0-9.
固定20个字符.
不允许在开头或中间的空格.
最后的空间允许.
例:
12345678901234567890 [Match]
1234567890 [Match]
abcde12345 [Match]
abcdefg [Not match]
ab cdefg [Not match]
Run Code Online (Sandbox Code Playgroud)
我使用这个正则表达式,它工作正常,但它很长很难维护.
[a-zA-Z0-9]{20}|[a-zA-Z0-9]{19}\s{1}|[a-zA-Z0-9]{18}\s{2}
|[a-zA-Z0-9]{17}\s{3}|[a-zA-Z0-9]{16}\s{4}|[a-zA-Z0-9]{15}\s{5}
|[a-zA-Z0-9]{14}\s{6}|[a-zA-Z0-9]{13}\s{7}|[a-zA-Z0-9]{12}\s{8}
|[a-zA-Z0-9]{11}\s{9}|[a-zA-Z0-9]{10}\s{10}|[a-zA-Z0-9]{9}\s{11}
|[a-zA-Z0-9]{8}\s{12}|[a-zA-Z0-9]{7}\s{13}|[a-zA-Z0-9]{6}\s{14}
|[a-zA-Z0-9]{5}\s{15}|[a-zA-Z0-9]{4}\s{16}|[a-zA-Z0-9]{3}\s{17}
|[a-zA-Z0-9]{2}\s{18}|[a-zA-Z0-9]{1}\s{19}|\s{20}
Run Code Online (Sandbox Code Playgroud)
请帮忙,谢谢.
更新.
实际上我需要检查很长的字符串.
起初,在我提出这个问题之前,我的正则表达式看起来像这样(第一个正则表达式)
^[\s\d]{25}\d{6}[0-1]{1}\d{24}[\!\@\#\$\%\^\&\*\(\)\-\\_\=\+\/\,\?\<\>\;\:\"\'\w\s\.]{30}(\s{3}|\d{3})(\s{4}|\d{4})[\s|00|10|20|40]{2}[a-zA-Z0-9\s]{20}[\s\w\d]{0,32}$
Run Code Online (Sandbox Code Playgroud)
在我问这个问题后,我的正则表达式看起来像这样(第二个正则表达式)
^[\s\d]{25}\d{6}[0-1]{1}\d{24}[\!\@\#\$\%\^\&\*\(\)\-\\_\=\+\/\,\?\<\>\;\:\"\'\w\s\.]{30}(\s{3}|\d{3})(\s{4}|\d{4})[\s|00|10|20|40]{2}(?=.{20})[a-zA-Z0-9]*\s*[\s]{0,32}$
Run Code Online (Sandbox Code Playgroud)
假设我把这个正则表达式分成3部分.
Part1:[\s\d]{25}\d{6}[0-1]{1}\d{24}[\!\@\#\$\%\^\&\*\(\)\-\\_\=\+\/\,\?\<\>\;\:\"\'\w\s\.]{30}(\s{3}|\d{3})(\s{4}|\d{4})[\s|00|10|20|40]{2}
Part2:[a-zA-Z0-9\s]{20} changed to (?=.{20})[a-zA-Z0-9]*\s*
Part3:[\s\w\d]{0,32}
Run Code Online (Sandbox Code Playgroud)
第1部分工作正常.
第2部分要求已更改,因此我将其更改为"(?=.{20} $)[a-zA-Z0-9]*\s*"
Part3是我改变part2时的问题.
例
00202510027680 1901160000000000000000000007000Test Test 009 069 aaaaaaaaaaaaaaaaaaaa
Run Code Online (Sandbox Code Playgroud)
字符串以32个空格结尾.如果我再添加1个空格,则第一个正则表达式不匹配.但第二次正则表达比赛.正确不匹配.
如何修改part2(或part3)以满足要求.谢谢.
您可以使用
^(?=.{20}$)[a-zA-Z0-9]*\s*$
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示
在此表达式中,使用正向前导强制执行20个字符的长度(?=.{20}$).由于匹配模式仅匹配AZ,az和0-9,.因此前瞻是可能的.
正则表达式解释:
^ - 字符串的开头(?=.{20}$) - 字符串长度必须为20个字符[a-zA-Z0-9]*- 零个或多个字母或数字(+可以用a代替*)\s* - 零个或多个空格$ - 字符串结尾C#:
var reg = @"^(?=.{20}$)[a-zA-Z0-9]*\s*$";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1783 次 |
| 最近记录: |