我有一些关于电话号码的示例,如下所示:
0810-093-485-58
0811.4845.5677
0812 567 6788 2
08138475967079/0813845765998
0814749345875 NEW
64739845985
0815756867967 (G) / 022 845 769
00816956865090
0817637698578
我尝试使用替换和正则表达式,如下:
select replace (number, '','') as phone_number
from details
where number not regexp '[[:punct:] A-Za-z]' and number not regexp '^ [1-9]'
这些语法仅应用结果:
0817637698578
我的观点是我想清理那些标点符号、空格和包含的字母:
081009348558
081148455677
08125676788 2
08138475967079
0814749345875
0815756867967
0816956865090
0817637698578
所以,结果不仅是一个,而是所有电话号码,只是非数字都被清除。 语法怎么样?请帮忙。谢谢。
最佳答案
您的 where
子句排除了所有包含字母、空格或标点符号的数字,因此您将看到的都是格式良好的数字。此外,replace (number, '','')
根本不会对字符串进行任何更改。
如果没有正则表达式 replace
函数,就没有什么好的方法可以做到这一点,该函数可作为用户定义的函数使用,但不是 native 函数。看PREG_REPLACE
here .
关于mysql - 如何使用 REGEX 清理标点符号、空格和字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10538704/