我需要一个正则表达式来验证two or one数字,然后是,或.,然后是two or one数字。因此,这些是有效的输入:
two or one
,
.
11,11 11.11 1.1 1,1
jqjz2hbq1#
\d{1,2}[\,\.]{1}\d{1,2}
编辑:更新以满足新要求(备注);)编辑:根据Bryan删除不必要的数量
^[0-9]{1,2}([,.][0-9]{1,2})?$
piv4azn72#
为了以正则表达式的形式表示一个数字,您可以使用以下两种方法之一:[0-9]或\d为了指定数字出现的次数,您将添加[0-9]* :星星表示有0位或更多位[0-9]{2}:{N}表示N位[0-9]{0,2}:{N,M} N位到M位假设我想表示一个1到99之间的数字,我会这样表达:[0-9]{1,2}或\d{1,2}或者说我们正在使用二进制显示,显示一个字节大小,我们希望我们的数字在0和1之间,字节大小的长度为8,所以我们将其表示如下:[0-1]{8}二进制字节的表示然后,如果你想添加一个,或一个.符号,你会用途:\,或.或者可以使用[.]或[,]您也可以在可能的值之间进行选择[.,]表示点或逗号符号你只需要将这些片段连接在一起,所以如果你想表示一个1或2位数字,后面跟着一个逗号或一个句号,后面再跟着两个数字,你可以这样表达:[0-9]{1,2}[.,]\d{1,2}还要注意,C++字符串中的正则表达式字符串必须是双反斜线,因此每个\都变成\
isr3a4wc3#
\d在大多数语言中表示数字。您也可以在所有语言中使用[0-9]。对于“句点或逗号”,请使用[\.,]。根据您的语言,您可能需要更多的反斜杠,具体取决于您引用表达式的方式。最终,正则表达式引擎需要看到单个反斜杠。*表示“零或更多”,因此\d*和[0-9]*表示“零或更多数字”。?表示“零或一”。这两个限定符都不表示正好一个。大多数语言还允许您使用{m,n}表示“在m和n之间”(即:{1,2}表示“介于1和2之间”)由于点或逗号和其他数字是可选的,您可以将它们放在一个组中,并使用?量词表示该组的“0或1”。把所有这些放在一起,你可以用途:
\d
[0-9]
[\.,]
*
\d*
[0-9]*
?
{m,n}
\d{1,2}([\.,][\d{1,2}])?
意思是,一个或两个数字\d{1,2},后跟一个由点或逗号组成的组(...)?中的零或一个,然后后跟一个或两个数字[\.,]\d{1,2}
\d{1,2}
(...)?
[\.,]\d{1,2}
bjp0bcyl4#
\d{1,2}[,.]\d{1,2}
\d表示数字,{1,2}部分表示前一个字符的1或2(本例中为\d),[,.]部分表示逗号或点。
tvz2xvvm5#
^\d\d?[,.]\d\d?$
^和$表示输入字符串的开始和结束(如果没有这个部分,字符串的23.45,如123.45将被匹配)。\d表示数字,\d?表示可选数字,[,.]表示点或逗号。工作示例(当你点击左侧菜单〉工具〉代码生成器,你可以生成9种流行语言之一的代码,如c#,js,php,java,...)here。
[ // tests '11,11', // valid '11.11', '1.1', '1,1', '111,1', // nonvalid '11.111', '11-11', ',11', '11.', 'a.11', '11,a', ].forEach(n=> console.log(`${n}\t valid: ${ /^\d\d?[,.]\d\d?$/.test(n) }`))
7hiiyaii6#
如果你想非常宽容,只需要两个最后的数字与逗号或点:
^([,.\d]+)([,.]\d{2})$
a0zr77ik7#
以下是分隔符前后任意位数的解决方案:
\d*[,.]\d*
7条答案
按热度按时间jqjz2hbq1#
编辑:更新以满足新要求(备注);)
编辑:根据Bryan删除不必要的数量
piv4azn72#
为了以正则表达式的形式表示一个数字,您可以使用以下两种方法之一:
[0-9]或\d
为了指定数字出现的次数,您将添加
[0-9]* :星星表示有0位或更多位
[0-9]{2}:{N}表示N位
[0-9]{0,2}:{N,M} N位到M位
假设我想表示一个1到99之间的数字,我会这样表达:
[0-9]{1,2}或\d{1,2}
或者说我们正在使用二进制显示,显示一个字节大小,我们希望我们的数字在0和1之间,字节大小的长度为8,所以我们将其表示如下:
[0-1]{8}二进制字节的表示
然后,如果你想添加一个,或一个.符号,你会用途:
\,或.或者可以使用[.]或[,]
您也可以在可能的值之间进行选择
[.,]表示点或逗号符号
你只需要将这些片段连接在一起,所以如果你想表示一个1或2位数字,后面跟着一个逗号或一个句号,后面再跟着两个数字,你可以这样表达:
[0-9]{1,2}[.,]\d{1,2}
还要注意,C++字符串中的正则表达式字符串必须是双反斜线,因此每个\都变成\
isr3a4wc3#
\d
在大多数语言中表示数字。您也可以在所有语言中使用[0-9]
。对于“句点或逗号”,请使用[\.,]
。根据您的语言,您可能需要更多的反斜杠,具体取决于您引用表达式的方式。最终,正则表达式引擎需要看到单个反斜杠。*
表示“零或更多”,因此\d*
和[0-9]*
表示“零或更多数字”。?
表示“零或一”。这两个限定符都不表示正好一个。大多数语言还允许您使用{m,n}
表示“在m和n之间”(即:{1,2}表示“介于1和2之间”)由于点或逗号和其他数字是可选的,您可以将它们放在一个组中,并使用
?
量词表示该组的“0或1”。把所有这些放在一起,你可以用途:
意思是,一个或两个数字
\d{1,2}
,后跟一个由点或逗号组成的组(...)?
中的零或一个,然后后跟一个或两个数字[\.,]\d{1,2}
bjp0bcyl4#
\d表示数字,{1,2}部分表示前一个字符的1或2(本例中为\d),[,.]部分表示逗号或点。
tvz2xvvm5#
已知最短的正则表达式(16个字符)
^和$表示输入字符串的开始和结束(如果没有这个部分,字符串的23.45,如123.45将被匹配)。\d表示数字,\d?表示可选数字,[,.]表示点或逗号。工作示例(当你点击左侧菜单〉工具〉代码生成器,你可以生成9种流行语言之一的代码,如c#,js,php,java,...)here。
7hiiyaii6#
如果你想非常宽容,只需要两个最后的数字与逗号或点:
a0zr77ik7#
以下是分隔符前后任意位数的解决方案: