Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php正则表达式_Php_Regex - Fatal编程技术网

Php正则表达式

Php正则表达式,php,regex,Php,Regex,我需要一个正则表达式,它接受最多8个字符的数字、空格和连字符。示例2632-63236252 谢谢给你:/^[\d-]{0,8}$/ 编辑:因为我以前很轻率,这个正则表达式现在可以完全满足您的需要:一个包含数字(\d)、空格()和连字符(-)的字符串,长度介于0到8个字符之间\s表示“空白字符”,您在问题中没有指定它,因此对/^([0-9\-]){0,8}$/的更改应该可以工作,尽管我还没有测试,所以如果我犯了一个愚蠢的错误,请原谅。尝试以下操作: /^(\d|\s|-){0,8}$/ /^(\

我需要一个正则表达式,它接受最多8个字符的数字、空格和连字符。示例2632-63236252


谢谢

给你:
/^[\d-]{0,8}$/

编辑:因为我以前很轻率,这个正则表达式现在可以完全满足您的需要:一个包含数字(
\d
)、空格(
)和连字符(
-
)的字符串,长度介于0到8个字符之间
\s
表示“空白字符”,您在问题中没有指定它,因此对

/^([0-9\-]){0,8}$/
的更改应该可以工作,尽管我还没有测试,所以如果我犯了一个愚蠢的错误,请原谅。

尝试以下操作:

/^(\d|\s|-){0,8}$/
/^(\d |\s |-){0,8}$/如果必须正好是8个字符:

/^[\d\s-]{8}$/
使用此正则表达式:

~^[\d\s-]{0,8}$~
下面是一个正则表达式,它接受最多8个字符的数字、空格和连字符

这个问题可能在不知不觉中模棱两可,因此在细节上有一些自由



“空格”表示水平空格字符();至少需要1个字符(空字符串不匹配);与其他答案相反,尾随换行符将不被接受(多亏了
D
)。

您尝试了什么?你想干什么?这是一个家庭作业问题吗?你自己想出了什么?所以经常紧跟着是“DIY”。所以,8个空格的字符串也是可以接受的?我真的不理解反对票。虽然不太礼貌,但对于没有正则表达式经验的人来说,这仍然是一个有效的问题。+1代表
\s
,我甚至忘记了它的存在。-0代表
\s
,-1代表一个完全破了的正则表达式-
{,8}
不会做你认为它会做的事。由于逗号,这将匹配123,不是吗?@CanSpice它将只匹配一位数字、空格或破折号,后跟文字字符
{,8}
。。。e、 g.
9{,8}
@CanSpice“老实说,这真的很容易:”)这将匹配长度超过8个字符的字符串
012345678901234567890
。不,我很确定它不会匹配。我只是在你发表评论后测试了一下。这实际上是一个非常简单的正则表达式模式。结尾的“{0,8}”确保其长度不超过8个字符。编辑:我明白你的意思。如果字符串是您建议的,它将只匹配第一部分。@BenjaminHarris,是的,我非常肯定它会匹配。试试看。(提示:使用
^
$
锚定您的模式)实际上,它将匹配更长的字符串,因为您不使用单词边界(\b)或行开始/结束来限制它。@CanSpice:如何?它将重复次数限制在0到8之间characters@CanSpice:哦,我没看到,好吧,这是错的。它将接受
1234
@Jonathan M,除了OP接受这个答案之外,你为什么认为它是错的?OP声明:“接受最多8个字符的数字、空格和连字符”,此模式与此模式明显匹配(您的示例
“1234”
)。是的。我的眼睛交叉了。请参阅本页上的其他喷口。休息日:)这是错误的,不接受
1234
“最多8个字符”与“正好8个字符”不同是的,我的眼睛交叉了。我认为OP正好是8,而不是最多8。我的错。加油,孩子们。:)乔纳森,请注意,如果你删除这个答案,你会在下一次代表重新投票后(如果你参与其中的话…)拿回你刚刚在否决票中失去的代表分数。@Bart Kiers,谢谢,伙计,但这需要我将鼠标一直移动到我答案的顶部,在到达顶部后我仍然需要单击鼠标。我只是没有那么多精力。:)
/^[\d -]{1,8}$/D