我想做一个正则表达式以仅两个条件验证电话号码的长度。首先,它应该是10个长度。 字符串的长度应为10位数字,并且可以是任何数字,例如 如果字符串的长度为11,则应以1开头。 长度可以是10或11。其他长度无效 谢谢你的帮助。 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我有如下正则表达式代码(我正在使用VerbalExpression dart插件),我的目的是检查字符串是否以“ 36”开头,后跟“ 01”,“ 02”或“ 03”。 之后,只要整个字符串为16个字符长即可。
var regex = VerbalExpression()
..startOfLine()
..then("36")
..then("01")
..or("02")
..anythingBut(" ")
..endOfLine();
String nik1 = "3601999999999999";
String nik2 = "3602999999999999";
String nik3 = "3603999999999999";
print('result : ${regex.hasMatch(nik1)}');
print('Hasil : ${regex.hasMatch(nik2)}');
print('Hasil : ${regex.hasMatch(nik3)}');
我的代码仅适用于nik1和nik2,但是我想要适用于nik3,我注意到我不能在or()之后放置or()进行多次检查,这只会给我所有错误的结果,我如何实现呢?
我不熟悉VerbalExpression
,但是执行此操作的RegExp
很简单。
const pattern = r'^36(01|02|03)\S{12}$';
void main() {
final regex = RegExp(pattern);
print(regex.hasMatch('3601999999999999')); // true
print(regex.hasMatch('3602999999999999')); // true
print(regex.hasMatch('3603999999999999')); // true
print(regex.hasMatch('360199999999999')); // false
print(regex.hasMatch('3600999999999999')); // false
print(regex.hasMatch('36019999999999999')); // false
}
模式说明:
r
前缀表示dart会将其解释为原始字符串(“ $”和“ \\”不视为特殊字符串)。 ^
和$
表示字符串的开头和结尾,因此它将仅匹配整个字符串,而不能仅从字符串的一部分中找到匹配项。 (01|02|03)
“ 01”或“ 02”或“ 03”。 |
表示“或”。 将其包装在括号中可使其知道在哪里停止OR。 \\S
匹配任何非空白字符。 {12}
表示前一个事物必须重复12次,因此\\S{12}
表示任何12个非空白字符。 声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.