当前位置: 首页 > 知识库问答 >
问题:

PHP:preg\u match->数字和一个连字符

刘狐若
2023-03-14

我想要一个只接受字母和一个连字符的正则表达式。该值必须以5-(5和1连字符)开头,后面只有5-15个数字。

我目前正在使用:preg\u match('/^[5]-{1}[\0-9]{5,15}$/',$\u POST['value')

有效值为:5-123456789

我的正则表达式接受两个连字符,如5-123456789。它必须以5、一个连字符和5-15个数字开头。我该怎么做?

提前感谢!

共有2个答案

云京
2023-03-14

您在0之前使用了\,这意味着它不是范围0-9,而是0和-9,因此这是您在这里的第二个连字符(但它是可选的,因为在括号[]中)。只需将此\从括号中删除即可。让它像这样:

preg_match('/^[5]-{1}[0-9]{5,15}$/', $_POST['value'])

即使这个符号是正确的:

preg_match('/^5-[0-9]{5,15}$/', $_POST['value'])
庄经国
2023-03-14

问题是您指定的数字错误:[\0-9]匹配索引介于零和9之间的任何字符——在ASCII术语中,索引为0到57的字符。连字符的索引为45,因此是允许的。发生这种情况是因为\0被解释为八进制转义序列。

您应该使用[0-9]{5,15}\d{5,15}。您还可以稍微简化正则表达式<代码>/^5-\d{5,15}$/正确且较短。

 类似资料:
  • null null 我想在ng-pattern中使用这个regex来检查来自用户的文本输入。

  • 问题内容: 为什么在这些情况下输出不同? ==> 印刷:2010年 ==> 打印:200 为什么第一个输出不是30?它与运算符优先级有关吗?就像首先将“ printing”和x连接在一起,然后将结果字符串和y连接在一起?我对么? 问题答案: 它的规则 我在下面显示从高到低的优先顺序: **如果运算符具有相同的优先级 ,* 则 此方法起作用 * 现在 :是字符串” :是Java中唯一将Number连

  • 你好,我对正则表达式是新手,我发现自己在这个问题上卡住了。 我有一个8字符字符串,以前已经过滤为只有一个字母数字,所以这个字符串将只包含数字和字母。我要做的是在字符串中的任何地方找到前两个连续数字,一旦找到,确保两个连续数字之后的任何字符都是alpha字符a-z,如果不匹配,只返回false;到目前为止我 希望这是清楚的 再次感谢您的帮助

  • 问题内容: 我知道的结果是布尔值,因此无法进行比较,但是我们如何检查是否存在多个字符? 问题答案: 这不是您想要的。请使用堆栈语句: 或者,由于我是 正则表达式的狂热者 ,因此这是一种使用 正则表达式 的方法!:) 由于user2980077 ,此后修复的代码中有一个错误

  • 我被困在这个练习中。 任务: 数字根是数字中所有数字的递归和。给定n,取n的位数之和。如果该值有多个位数,则以这种方式继续减少,直到生成一个位数。这只适用于自然数。 其工作原理如下: 数字根(16) 1 6=7 数字根(942) 9 4 2=15。。。1 5 =6 我的方法在这里。关于如何正确返回正确值的任何提示?我将不胜感激。

  • 问题内容: 这是代码片段: 输出为: 为什么会这样呢?我认为是,要么,或。 这里发生了什么? 问题答案: 二是算术加法,不是字符串连接。您必须执行或之类的操作,或使用和方法来确保操作符中的至少一个是用于字符串串联的运算符。 [JLS 15.18加法运算符](http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#