草庐IT

SRE_Match

全部标签

PHP - preg_match_all - 有点高级

我需要在字符串中找到特定的文本部分。该文本需要:12个字符(仅限字母和数字)整个字符串必须至少包含3位数字3*4个带空格的字符(例如K9X66GM6LM11)上述示例中的每个block必须至少包含1个数字像this这样的词,line,spod不应该被认可所以我以这段代码结束:preg_match_all("/(?但它不适用于所有要求。我当然可以用preg_repace或str_replace并删除所有(!,?,#)并在循环中计数数字(如果有4个或更多)但我想知道是否可以使用preg_match_all...这里是要搜索的字符串:?K9X66GM6LM11//notrecognized-

php - preg_match 在 php > 5.3 中失败

我不擅长正则表达式,所以我什至不知道这个到底是做什么的:echopreg_match('/^(([a-zA-Z0-9\x2d]{1,63}\x2e)*[a-zA-Z0-9\x2d]{1,63}){1,254}$/','example12345678.com>');我从旧版本的ZendFramework-1.5中获取它,它已经过时并且在框架的最后一个稳定版本中不再显示此正则表达式。然而,它的行为很奇怪,因为我在官方php资源中没有找到文档解释或向后不兼容说明。问题是在php5.2.*上它工作正常:返回0。在php5.3.10、5.4.0(最有可能是5.3.、5.4.我想)它返回FALSE

php - 为什么 preg_match 返回一些空元素?

我写了正则表达式^(?:([1-5])|([1-5]).*|.*([1-5])|.*([1-5]).*)$以匹配独立数字1-5,或由至少一个空格分隔的数字构成字符串的其余部分。我已经在在线服务中对其进行了测试,结果就是数字本身。但是,使用代码时preg_match('/^(?:([1-5])|([1-5]).*|.*([1-5])|.*([1-5]).*)$/','order123141245',$matches);我明白了:Array([0]=>order123141245[1]=>[2]=>[3]=>5)[0]元素是一个很好的完全匹配。我预计[1]元素为5但它是空的,并且还有另一个

php - 如何解决 €25.99 vs 25.99€ preg_match 问题?

如果我有这些字符串:$string1="Thisbookcosts€25.99inourshop."另一边$string2="Thisbookcosts25,99€inourshop."如何使用preg_match获得“€25.99”或“25,99€”?代码会是什么样子?请注意,有两种写欧元符号的方法。在欧盟,正确的方法是在数字后面写符号,例如25,99€,并使用逗号作为小数分隔符。然而,很多美国人都坚持使用美元方式(€25.99)和点作为小数点分隔符。如何对这两种情况进行检查并以最干净、最有效的方式获取带符号的值? 最佳答案 这是

php - preg_match_all `u` 标志依赖于什么?

我在PHP应用程序中有一些代码,当我尝试在生产服务器上使用它时返回null,但它在开发服务器上运行良好。这是代码行://usetheregexunicodesupporttoseparatetheUTF-8charactersintoanarraypreg_match_all('/./us',$str,$match);u标志依赖于什么?我在启用和禁用mb_string的情况下进行了测试,它似乎没有影响它。我得到的错误是preg_match_all:编译失败:在偏移量-1处设置了未知选项位更多信息这是生产服务器上的选项之一:'--with-pcre-regex=/opt/pcre'这里是

php - CodeIgniter form_validation 中的 regex_match 生成 : Message: preg_match(): No ending delimiter '/' found

我一直在寻找其他类似的帖子,问题似乎是一个未转义的斜线。但是我正在逃避他们。字符串应该是这样的:23/12/2012这就是我声明验证规则的方式:regex_match[/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)[0-9]{2}$/]结束分隔符在那里,日期的两个中间斜杠用反斜杠转义。我也试过这个略有不同,但我得到了同样的错误:regex_match[/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)\d\d$/]哪里出错了?编辑:按照您的建议,我尝试使用回调函数。这是声明,

php - shell 相当于 php preg_match?

是否有与PHP的preg_match等效的shell?我正在尝试从shell脚本中的这个字符串中提取数据库名称。define('DB_NAME','somedb');在PHP中使用preg_match我可以做这样的事情。preg_match('define(\'DB_NAME\','(.*)'\'\)',$matches);echo$matches[1];我怎样才能在shell脚本中完成同样的事情? 最佳答案 使用expr可以准确回答问题:exprmatch"string""regexp"因此,根据您的需要,您可以这样写:exprm

php - preg_match 有字符串大小限制

preg_match在PHP5.2.5上有str的限制 最佳答案 preg_last_error()在第二次调用返回2(=PREG_BACKTRACK_LIMIT_ERROR)之后,您可能希望提高该值。 关于php-preg_match有字符串大小限制,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6173223/

php - 字符串损坏或 preg_match 错误?

NO-BREAKSPACE和许多其他UTF-8符号need2bytestoitsrepresentation;因此,在假定的UTF8字符串上下文中,非ASCII(>127)的孤立(不以xC2开头)字节是无法识别的字符……好吧,这只是布局问题(!),但是它破坏了整个字符串?如何避免这种“非预期行为”?(它occursinsomefunctionsandnotinothers)。示例(仅使用preg_match生成非预期行为):header("Content-Type:text/plain;charset=utf-8");//sameiftext/html//PHPVersion5.5.4

php - 如果 preg_match 有多个单词

是否可以对多个单词使用带有preg_match的if语句,并在找到所有单词时使条件为真?$line="oneblah,twoblahblahthree";//notworkingcodeif(preg_match('[one|two|three]',$line)){echo"matchedallthree";}else{echo"didn'tmatchallthree";}已经尝试了很多东西,但即使找到一个词也总是满足条件.. 最佳答案 使用积极的前瞻:preg_match("%(?=.*one)(?=.*two)(?=.*thre