求解仅在匹配内容内包含空白字符的正确正则表达式
正则匹配问题解决方法
你的正则([0-9+?\s])会全局匹配所有数字、加号、问号和空白字符,自然会命中字符串里其他位置的空格。要只匹配+12 121 323 454这段里的字符,试试下面两种方案:
方案1:匹配完整的电话号码段
直接匹配整个号码部分,避免零散匹配:
\+\d+(?:\s\d+)+
\+:精准匹配开头的加号\d+:匹配一串连续数字(?:\s\d+)+:匹配“空格+数字串”的组合,至少出现一次,非捕获组不生成多余分组
方案2:仅匹配号码内的单个字符
如果需要单独匹配号码里的每个字符(+、数字、空格),可以用范围限定:
(?<=\d|\+)\s?(?=\d)|[+0-9]
这个正则会只匹配属于电话号码部分的字符,不会触及其它位置的空白。
内容的提问来源于stack exchange,提问作者Asdf1234567
相关产品推荐
相关产品推荐

