我有一个正则表达式,最多允许6个小数(“.”是小数分隔符)
/^\d*[.]?\d{0,6}$/
我还想设置最大长度条件,以便用户只能输入12位数字,最大长度应排除“.”我如何使用正则表达式做到这一点。
太长别读;
^(?!(?:\D*\d){13})\d*[.]?\d{0,6}$
^(?=(?:\D*\d){0,12}\D*$)\d*[.]?\d{0,6}$
您可以使用一种简单的积极前瞻方法:保留您的模式(如果它按预期工作),然后插入
(?=(?:\D*\d){0,x}\D*$)
紧跟在^
之后,将x更改为所需的位数。
因此,您可以使用
^(?=(?:\D*\d){0,12}\D*$)\d*[.]?\d{0,6}$
^^^^^^^^^^^^^^^^^^^^^^^
(?=(?:\D*\D){0,12}\D*$)
匹配一个位置,该位置后面紧跟零到12次出现的任何0个非数字字符,后跟一个数字1,然后在字符串末尾有任何0个非数字。
查看正则表达式演示
或者,禁止超过13位的字符串:
^(?!(?:\D*\d){13})\d*[.]?\d{0,6}$
^^^^^^^^^^^^^^^^^
(?!(?:\D*\D){13})
是一种负前瞻,如果出现13次任何0个非数字后跟一个数字字符,则匹配失败。
当您需要允许空字符串时,这比正面前瞻方法更好。
查看正则表达式演示
我们可以尝试使用负面表情:
^(?:(?!.*\.)(?!\d{13})|(?=.*\.)(?![0-9.]{14}))\d+(?:\.\d{1,6})?$
以下是正则表达式的解释:
^(?: from the start of the string
(?!.*\.)(?!\d{13}) assert that no more than 12 digits appear
(in the case of a number with NO decimal point)
| or
(?=.*\.)(?![0-9.]{14})) assert that no more than 13 digits/decimal point appears
(in the case of a number which HAS a decimal point)
\d+ then match one or more digits (whole number portion)
(?:\.\d{1,6})? followed by an optional decimal component (1 to 6 digits)
$ end of the string
您可以使用正前瞻来检查具有小数点后最多6位的数字或12位的字符串),然后总共匹配多达13个字符:
^(?=\d*\.\d{0,6}$|\d{1,12}$).{1,13}$
对于该输入,第2和第5个值将匹配:
1234567890123
123456.789012
12345.6789012
1234567.890123
12345.67890
regex101上的演示
我需要根据给定条件验证输入, -总长度必须为20个字符-前五个位置必须是字母-剩余的应该是数字,但必须存在一个连字符(-),该连字符只能出现在数字之间。我喜欢正则表达式 但它也允许在结尾使用连字符,甚至可以不使用连字符。
我在寻找一个正则表达式,它允许数字具有小数点后的最大长度。 它应该允许最大16位数字和3位小数,但是最大16位应该包括小数,但不包括。字符。到目前为止,我已经尝试过了:,除了允许17个单个数字之外,它很接近,而它应该只接受16个。如果我将更改为,它会破坏小数。 可接受值: 123 123.3 123.45 123.456 1111111111111.345(共16个数字) 111111111111
我正在尝试在文本中查找html标签,如下所示: 但是颜色部分可以改变(比如#bbbbbb)…我想我可以为此使用正则表达式,对吗?但是我不确定我怎么能忽略它的颜色部分… 你能帮我吗?这可能吗? 非常感谢你
我不确定这是否可以使用正则表达式。我会尝试使用正则表达式,但如果不可能,我会切换到双重验证。 我的数据库(postgresql)接受为15,6(最多15位,最多6位小数),因此如果我有10位整数,我可以有5位小数。小数分隔符被忽略。 我目前有一个正则表达式(逗号是小数分隔符): 它不验证总长度,只验证左侧的数字。但由于用户也可以键入点(千位分隔符),我有一个怪物:
我有一个用于匹配 URL 的正则表达式(它完成了工作,它为我想要的而工作。但是,当我不希望它时,它也会匹配电子邮件的域。 当前匹配项: < li>http://www.foo.bar < li>foo.bar < li >网址:foo.bar(与foo.bar部分匹配) < li>info@foo.bar(匹配foo.bar部分) 我不希望它匹配最后一个,所以它只匹配前三个。我尝试添加到前面,但这
我有以下正则表达式: 这允许: 开头可选 然后是数字、点、逗号、圆括号、破折号和空格。 除此之外,我需要确保数字和加号(如果存在)的长度在9到15之间(所以我不计算符号之外的任何特殊字符)。 最后一个条件是我有问题的地方。 有效输入: 358(9)1234567 无效输入: 3.5 8.9,1-2(3)4.5,6.77777(33个字符,只有20个计数字符(数字和加号)太多) 如果可能的话,使用正