我目前有以下正则表达式
(?:(?<=^)|(?<=\s))(?:\+62|08)\S+\b
问题是它找不到类似的文本
0823 2371 2318
或
+62812 2712 2819
基本上在08或+62之后的可以是0-9之间的数字或单个空格或点或_ 我还需要进行限制,使其需要找到10个或更多字符
答案 0 :(得分:3)
您可以使用
(?:\+62|08)[\s._-]?(?=[\d\s._-]{8})\d+(?:[\s._-]\d+)*\b
请参见regex demo
详细信息
(?:\+62|08)
-+62
或08
[\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})+
如果愿意,您可以简单地向这些组添加+62
或08
以外的其他边界。
编辑:我不确定这是否涵盖您的输入样本。您可以使用this one之类的RegEx对其进行修改:
(\+62|08)([0-9\.\-\s\_]{3,14})