正则表达式可正确识别单独荷兰手机号但无法匹配行内号码,如何调整?
你当前正则无法匹配行内号码的核心原因是首尾的^和$锚点限制了只能匹配整行内容,只要去掉这两个锚点,再补充边界限制避免误匹配即可。
另外你的原有正则中字符组[1,2,3,4,5,7,8,9]里的逗号是多余的,会被识别为可匹配的普通字符,建议删除。
修改后可用正则
(?<!\w)(?:0|(?:\+|00) ?31 ?)(?:(?:[1-9] ?(?:[0-9] ?){8})|(?:6 ?-? ?[1-9] ?(?:[0-9] ?){7})|(?:[12345789]\d ?-? ?[1-9] ?(?:[0-9] ?){6})|(?:[12345789]\d{2} ?-? ?[1-9] ?(?:[0-9] ?){5}))(?!\w)
补充说明
前后新增的(?<!\w)和(?!\w)是负向零宽断言,保证手机号前后不会紧跟字母/数字,避免把类似gggf0612345678这种和字母连在一起的数字串误判为手机号。
修改后可以匹配所有你列出的号码格式,同时支持行内任意位置的手机号捕获,可直接用于替换操作移除对应号码。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

