沃梦达 / 编程问答 / php问题 / 正文

警告:preg_Match()[unction.preg-Match]:编译失败:在偏移量上没有重复内容

Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset(警告:preg_Match()[unction.preg-Match]:编译失败:在偏移量上没有重复内容)

本文介绍了警告:preg_Match()[unction.preg-Match]:编译失败:在偏移量上没有重复内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将preg_Match检查从url检查更改为用户名检查,这是可以接受的最小/最大2-16个字符、破折号、空格和符号。我收到此错误

警告:preg_Match()[unction.preg-Match]:编译失败:在偏移量14处没有重复的内容

if(empty($string) || preg_match("#^([w- ]{2,16}*(?:.[w- ]{2,16}*)+):?(d+)?/?#i", $string))

查找URL的旧代码

if(empty($string) || preg_match("#^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?#i", $string))

推荐答案

问题在这里:

[w- ]{2,16}*

不能同时使用{2,16}*,只能使用其中一个。

如果您希望匹配2到16组[w- ]至少0次,请将其包装在子模式中并将*附加到外部:

(?:[w- ]{2,16})*

这篇关于警告:preg_Match()[unction.preg-Match]:编译失败:在偏移量上没有重复内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:警告:preg_Match()[unction.preg-Match]:编译失败:在偏移量上没有重复内容