Regex 可能包含8或9个数字的正则表达式-如何操作?

Regex 可能包含8或9个数字的正则表达式-如何操作?,regex,digits,Regex,Digits,我使用此正则表达式验证巴西手机: /^(\([0-9]{2}\))\s([9]{1})?([0-9]{4})-([0-9]{4})$/ 输出:(31)8876-3234有效 但圣保罗州有9位数的手机: /^(\([0-9]{2}\))\s([9]{1})?([0-9]{4})-([0-9]{4})$/ 输出SP:(31)98876-3234 当前正则表达式也需要调整以接受它的有效性,关于我应该在其中更改什么的任何提示?您可以使用{m,n}量词来创建一个范围: /^(\([0-9]{2}\))

我使用此正则表达式验证巴西手机:

/^(\([0-9]{2}\))\s([9]{1})?([0-9]{4})-([0-9]{4})$/
输出:
(31)8876-3234
有效

但圣保罗州有9位数的手机:

/^(\([0-9]{2}\))\s([9]{1})?([0-9]{4})-([0-9]{4})$/
输出SP:
(31)98876-3234


当前正则表达式也需要调整以接受它的有效性,关于我应该在其中更改什么的任何提示?

您可以使用
{m,n}
量词来创建一个范围:

/^(\([0-9]{2}\))\s([0-9]{4,5})-([0-9]{4})$/

尽管您的正则表达式看起来不错,因为它在4位数之前有一个可选的
9
。但是,如果有任何可能性,除了
9
之外,还可以使用这个正则表达式。

您可以使用
{m,n}
量词来创建一个范围:

/^(\([0-9]{2}\))\s([0-9]{4,5})-([0-9]{4})$/


尽管您的正则表达式看起来不错,因为它在4位数之前有一个可选的
9
。但是,如果有任何可能,除了
9
之外,您可以使用这个正则表达式。

正则表达式已经匹配了额外的前导9。对我来说没有任何更改。顺便说一下,您可以使用
\d
而不是
[0-9]
来简化正则表达式。另外,
[9]{1}
是一个字符类,只包含一个字符,并且重复一次,这与只编写
9
是一样的。奇怪的是,它不起作用。然而,有了下面提到的改变,它没有改变。正则表达式已经匹配额外的前导9。对我来说没有任何改变。顺便说一下,您可以使用
\d
而不是
[0-9]
来简化正则表达式。另外,
[9]{1}
是一个字符类,只包含一个字符,并且重复一次,这与只编写
9
是一样的。奇怪的是,它不起作用。然而,有了下面提到的更改,o.Odamn就做到了,我怎么能在搜索中错过它呢?>>非常感谢10分钟内接受答案在一个不相关的话题中,你知道一个简单的方法吗:当我点击一个屏蔽输入字段(带有预定义字段)时,总是转到第一个字符,而不是从中间开始?@user2056484。我真的不明白你在问什么?如果这个话题与这个问题完全无关,那么你可能会发布一个新问题。是的,当然,我会再搜索一点,我可能会在这里提问,并提供更多细节。再次感谢您抽出时间,祝您愉快是的,我不得不等了几分钟,所以我忘了。完成!该死,我怎么能在搜索中漏掉这个呢非常感谢10分钟内接受答案在一个不相关的话题中,你知道一个简单的方法吗:当我点击一个屏蔽输入字段(带有预定义字段)时,总是转到第一个字符,而不是从中间开始?@user2056484。我真的不明白你在问什么?如果这个话题与这个问题完全无关,那么你可能会发布一个新问题。是的,当然,我会再搜索一点,我可能会在这里提问,并提供更多细节。再次感谢您抽出时间,祝您愉快是的,我不得不等了几分钟,所以我忘了。完成!