忽略指定字符的特定长度的Regexp

忽略指定字符的特定长度的Regexp,regex,Regex,假设我们有一些定义长度的字符串,其中可能包含一些分隔符,这些分隔符仅用于用户友好的视图 示例:9位字符串“123456789”,可以表示为“123456789”或“123.456.789”或“1-234-5-67-89”或“123 456 789” 我需要的是一个regexp,它可以忽略分隔符来计算长度。 类似于[\d |,\.\-\s]{9},但只将\d计入{9}(允许任何数量的分隔符字符…可选的是,分隔符字符在一行中不应超过两个) (可选)分隔符字符在一行中不应超过两个: ^[-.,\s]{

假设我们有一些定义长度的字符串,其中可能包含一些分隔符,这些分隔符仅用于用户友好的视图

示例:9位字符串“123456789”,可以表示为“123456789”或“123.456.789”或“1-234-5-67-89”或“123 456 789”

我需要的是一个regexp,它可以忽略分隔符来计算长度。 类似于
[\d |,\.\-\s]{9}
,但只将\d计入{9}(允许任何数量的分隔符字符…可选的是,分隔符字符在一行中不应超过两个)

(可选)分隔符字符在一行中不应超过两个:

^[-.,\s]{0,2}(?:\d[-.,\s]{0,2}){9}$
(可选)分隔符字符在一行中不应超过两个:

^[-.,\s]{0,2}(?:\d[-.,\s]{0,2}){9}$

我宁愿使用更简单的正则表达式来:

  • 查找所有数字并检查匹配数,或
  • 删除所有非数字并检查剩余数字的长度

与其费心寻找一个合适的正则表达式来实现这一点,我宁愿使用更简单的正则表达式:

  • 查找所有数字并检查匹配数,或
  • 删除所有非数字并检查剩余数字的长度

您没有使用“分隔符”,而是指“分隔符”?还是你?引号:分隔符:一种“字符”或“字符串”,用于为任意大小的文本对象设置边界,不要与“分隔符”或“终止符”混淆。“定界”实际上只是指“环绕”或“包围”(就像这些括号所做的)。当然,“分隔符”。对不起,我的英语:)你没有使用“分隔符”,而是指“分隔符”?还是你?引号:分隔符:一种“字符”或“字符串”,用于为任意大小的文本对象设置边界,不要与“分隔符”或“终止符”混淆。“定界”实际上只是指“环绕”或“包围”(就像这些括号所做的)。当然,“分隔符”。对不起,我的英语:)对了,在发布了这个问题之后,我得到了一些类似的结果,部分类似于:(\d[\-]{0,1}){11,13}(在我的例子中,^和$不是必需的,因为搜索是通过一段文本进行的)但是,我想知道,“(?:)”的用法给这个表达式增加了什么?如果我们不需要反向引用,它通常更倾向于“()”吗?对,在发布了这个问题之后,我得到了类似的结果,部分类似于:(\d[\-]{0,1}){11,13}(在我的情况下,^和$是不需要的,因为搜索需要一段文本)但是,我想知道,“(?:)”的用法给这个表达式增加了什么?如果我们不需要反向引用,是否通常倾向于使用“()”?