gpt4 book ai didi

php - 我需要一个 RegExp 来只匹配拉丁字符而不匹配其他字符

转载 作者:行者123 更新时间:2023-12-03 20:50:07 27 4
gpt4 key购买 nike

我编写了以下代码来检查给定的字符串是拉丁字符还是包含其他一些非拉丁字符,例如波斯字符。问题是它总是为以下两个字符串返回 true:

$str = "Hello, What's up?"

或者

$str = "Hello, سلام"

而对于第二个字符串,它应该返回 false,因为它也包含波斯字符(非拉丁字符)。

$default_rule = "/[a-zA-Z0-9\(\)\*_\-\!\#\$\%\^\&\*\,\.\"\'\]\[]*/";
$rule = ($rule==null) ? $default_rule : $rule;

if(preg_match($rule, $str)==true)
{
// always returns true
}

最佳答案

如果字符串包含您指定的字符中的零个或多个,您的模式将返回真。换句话说,它会为 任何 字符串返回 true。您需要在其周围放置开始 (^) 和结束 ($) anchor 。此外,您不需要转义大多数这些字符(字符类使它们被视为文字字符):

$default_rule = '/^[a-zA-Z0-9()*_\-!#$%^&*,."\'\][]*$/';

但是,这将匹配一个空字符串。还要确保字符串不为空,请使用 + 量词(一个或多个)代替 *

$default_rule = '/^[a-zA-Z0-9()*_\-!#$%^&*,."\'\][]+$/';

关于php - 我需要一个 RegExp 来只匹配拉丁字符而不匹配其他字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24185231/

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