gpt4 book ai didi

用于匹配特定电话号码的正则表达式

转载 作者:数据小太阳 更新时间:2023-10-29 07:22:18 26 4
gpt4 key购买 nike

我正在尝试查看一个字符串是否与我所在国家/地区的电话号码格式匹配,即区号(两位数字前面可能有也可能没有 0,也可能位于括号之间)后跟 8 或 9 位数字其中最后 4 位数字之前可能有一个破折号字符。这些是一些有效的格式:


'00 00000000'
'000-000000000'
'000 00000-0000'
'00 0000-0000'
'(00) 0000-0000'
'(000) 000000000'

到目前为止,这是我的工作表达式:


p = /0?\d{2}\s?-?\s?\d{4,5}\s?-?\s?\d{4}/

我尝试使用条件判断区号是否在括号内 /?(\() 0?\d{2}\)|0?\d{2}\s?-?\s?\d{4,5}\s?-?\s?\d{4}/ 但得到 (repl):1: 未指定重复运算符的目标:/? (\() 0?\d{2}\)|0?\d{2}\s?-?\s?\d{4,5}\s?-?\s?\d{4} 错误。

我在这里做错了什么?

最佳答案

不要使用正则表达式验证电话号码。我打赌你不想排除那些偶尔输入 2 个后续空格或其他东西的人。

相反,过滤掉所有非数字和前导零,然后进行验证。像这样:

number.gsub(/\D+/, '').gsub(/\A0+/) =~ /\d{8,9}/

我不确定它是否能立即满足您的需求,但我敢打赌您已经明白了。毕竟,[000]1234 56789 是一个可以理解的电话号码。

关于用于匹配特定电话号码的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56214299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com