修改正则表达式,以便找到空间并设置最小长度限制

时间:2019-04-22 13:00:03

标签: regex sublimetext2

我目前有以下正则表达式

(?:(?<=^)|(?<=\s))(?:\+62|08)\S+\b

问题是它找不到类似的文本

0823 2371 2318

+62812 2712 2819

基本上在08或+62之后的可以是0-9之间的数字或单个空格或点或_ 我还需要进行限制,使其需要找到10个或更多字符

2 个答案:

答案 0 :(得分:3)

您可以使用

(?:\+62|08)[\s._-]?(?=[\d\s._-]{8})\d+(?:[\s._-]\d+)*\b

请参见regex demo

详细信息

  • (?:\+62|08)-+6208
  • [\s._-]?-空格._-
  • (?=[\d\s._-]{8})-当前位置的右边必须有8位数字/空格/点/连字符或下划线
  • \d+-1个以上数字
  • (?:[\s._-]\d+)*-零个或多个重复的空格/点/下划线/连字符,然后是1个以上的数字
  • \b-单词边界。

如果您需要限制它以匹配仅10位或更多位数的子字符串,请用(?=[\d\s._-]{8})代替(?=(?:[\s._-]*\d){8})超前,请参见this regex demo或使用(?:\+62|08)(?:[\s._-]*\d){8,}\b {{ 3}}。

答案 1 :(得分:0)

This RegEx将输入的电话号码分为三组,并且可能与输入字符串中所需的模式匹配:

(\+62|08)([0-9]+)(\s[0-9]{4})+

enter image description here

如果愿意,您可以简单地向这些组添加+6208以外的其他边界。


编辑:我不确定这是否涵盖您的输入样本。您可以使用this one之类的RegEx对其进行修改:

(\+62|08)([0-9\.\-\s\_]{3,14})

enter image description here