这是一个混合了数字和电话号码的示例文本/字符串:
哦,天哪,我今天有1000件事要做,我想读完 《海底两万里》,1954年出版,但嘿,我会在那里见到你 从下午4点到8点,我的手机是374-7657654,或者你可以打电话给我 (374)-334-5674 然后我可以从 16:30 到 19:45 来(欧洲 时间!
如何删除/仅检测电话号码(以任何格式编写,因为我无法预测用户将如何编写它们?
我试过了
('(?+[0-9]{3,15}+['- ]?+[0-9]?+')?+)
但它剥夺了时间或书名/年份等
这是正则表达式:
1?'W*([2-9][0-8][0-9])'W*([2-9][0-9]{2})'W*([0-9]{4})('se?x?t?('d*))?
preg_match("1?'W*([2-9][0-8][0-9])'W*([2-9][0-9]{2})'W*([0-9]{4})('se?x?t?('d*))?", "", $text);
其中$text
是您要验证的文本。
所有功劳都归功于 indiv,回答了这个问题
虽然你已经有了答案,但为什么不想出一些更简单的东西:
~([-+()'d]{5,})~
# looks for -+() and digits
# which need to be there at least 5 consecutive times
在 regex101.com 上查看演示。