gpt4 book ai didi

php - 测试字符串是否为正则表达式

转载 作者:IT王子 更新时间:2023-10-29 00:06:22 28 4
gpt4 key购买 nike

在 PHP 中是否有测试字符串是正则表达式还是普通字符串的好方法?

理想情况下,我想编写一个函数来运行一个字符串,返回 true 或 false。

我查看了 preg_last_error():

<?php
preg_match('/[a-z]/', 'test');
var_dump(preg_last_error());
preg_match('invalid regex', 'test');
var_dump(preg_last_error());
?>

显然第一个不是错误,第二个是。但是 preg_last_error() 两次都返回 int 0

有什么想法吗?

最佳答案

测试字符串是否为正则表达式的最简单方法是:

if( preg_match("/^\/.+\/[a-z]*$/i",$regex))

这将告诉您字符串是否很有可能被用作正则表达式。然而,有许多字符串可以通过该检查但无法成为正则表达式。中间未转义的斜杠、末尾的未知修饰符、不匹配的括号等都可能导致问题。

preg_last_error 返回 0 的原因是因为“无效的正则表达式”不是:

  • PREG_INTERNAL_ERROR(内部错误)
  • PREG_BACKTRACK_LIMIT_ERROR(过度强制回溯)
  • PREG_RECURSION_LIMIT_ERROR(过度递归)
  • PREG_BAD_UTF8_ERROR(UTF-8 格式错误)
  • PREG_BAD_UTF8_OFFSET_ERROR(UTF-8 字符中间的偏移量)

关于php - 测试字符串是否为正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778318/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com