繁体   English   中英

如何使正则表达式用于多种条件?

How to make regexp for multiple condition?

提示:本站收集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()进行多次检查,这只会给我所有错误的结果,我如何实现呢?

1 个回复

我不熟悉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个非空白字符。
1 如何使正则表达式通过这些条件

我想做一个正则表达式以仅两个条件验证电话号码的长度。首先,它应该是10个长度。 字符串的长度应为10位数字,并且可以是任何数字,例如 如果字符串的长度为11,则应以1开头。 长度可以是10或11。其他长度无效 谢谢你的帮助。 ...

2 正则表达式可处理多种条件

任何人都可以帮助我使用满足以下条件的javascript正则表达式(它是在textarea中验证输入): 至少应包含3个字符 第一个角色总是/ 整个输入字符串不应与确切的字符串'/ abc'和'/ xyz'匹配,但可以是/ abce或/ abct等其他任何字符串。 ...

3 正则表达式和多种条件的协助

我在这里有一个正则表达式。 我想知道如何添加多个条件,我尝试使用管道| 但它似乎无法正常工作。 我想匹配以下文件: 任何帮助表示赞赏。 我尝试使用以下正则表达式 编辑 我要匹配文件: 文件夹/ filename.jsx fodler / test.f ...

4 用于条件表达式的正则表达式

我需要一个可以将这样的表达式划分为令牌的正则表达式: 结果应该是这样的列表: 我做了这个,但是不起作用,它给了我这个结果: 这是正则表达式: 它可以识别数字和算术符号,但不适用于条件(&&,==,||,<=,> =)的符号。 你知 ...

5 PHP正则表达式可用于多种括号

我有一个看起来像这样的字符串: 我需要使用preg_match_all提取(和)以及(和)之间的所有内容 我有以下正则表达式,用于提取(和)之间的所有内容,但不提取(和)之间的所有内容 我试过使用: 和: 但是他们都没有成功。 我将如何包括这两种情况? ...

6 用于匹配多种日期格式的正则表达式

什么样的正则表达式匹配任何格式的日期,如: 该正则表达式应该是什么? 我的正则表达式与2009 年2月 26日和2009 年2月 26日相匹配,但不符合26FEB2009 。 所以如果有人知道那么请更新它。 日期26FEB2009是其他字符串的子字符串,如FUTIDX 2 ...

7 正则表达式有多种可能的选择

我正在努力做到这一点: 该脚本应读取当前目录并打印任何以消息开头的文件内容,并可能在其后加上句点和数字。 我的代码仍然打印出诸如message.txt文件。 我试图找出正确的语法,以不包括诸如此类的文件,而仅包括带句点和后缀数字的文件。 有任何想法吗? 谢谢。 ...

8 如何使Perl正则表达式选项成为条件

不要问为什么,但是... 我有一个正则表达式,如果在Windows上运行,则需要不区分大小写,但在* nix上运行时,区分大小写。 这是我目前正在做的事情的示例片段。 啊! 重复会伤害我的强迫症,但我的表现却很弱。 我想以某种方式使不区分大小写的条件使用正则表达式选项“ ...

10 用于条件替换的正则表达式

想要全部替换: 使用: " "如果标签周围没有空格 或""如果至少有一个相邻的空间 示例:a <br/> b - > a_b,a <br/> __b - > a__b(使用_表示空格) 使用Java ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM