[英]How to make regexp for multiple condition?
我有如下正則表達式代碼(我正在使用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.