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

使用preg_Match进行非常严格的复杂字符串验证

PHP very strict complex string validation using preg_match(使用preg_Match进行非常严格的复杂字符串验证)

本文介绍了使用preg_Match进行非常严格的复杂字符串验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试根据强加给我的以下正则表达式验证字符串:

[-,.:; 0-9A-Z&@$£¥€'"«»‘’""?!/\()[]{}<>]{3}[-,.:; 0-9A-Z&@$£¥€'"«»‘’""?!/\()[]{}<>*=#%+]{0,157}

有人可以帮助在PHP中编写preg_match来验证输入字符串吗?我挣扎是因为:

  1. 我对正则表达式的了解本来就不是很好
  2. 我在正则表达式本身中看到一些特殊字符,如果我直接将它们插入字符串(如$GB元,欧元),PHP肯定不会高兴

徒劳地希望我只是尝试将其插入preg_match,转义双引号,因此:

$ste = "Some string input";

if(preg_match("/[-,.:; 0-9A-Z&@$£¥€'"«»‘’""?!/\()[]{}<>]{3}[-,.:; 0-9A-Z&@$£¥€'"«»‘’""?!/\()[]{}<>*=#%+]{0,157}/",$ste))
{
    echo "OK";  
}
else
{
    echo "Not OK";  
}

提前谢谢!!

推荐答案

您可以这样做:

if (preg_match('~^[ -"$&-),-<>?-]{}£¥€«»‘’""]{3}[ -]{}£¥€«»‘’""]{0,157}$~u', $ste))
    echo 'OK';
else
    echo 'Not OK';

我为Unicode增加了u修饰符,并使用范围缩小了字符类的大小(例如:,-<表示Unicode表中,<之间的所有字符)

但最重要的是,我添加了锚点^$,这分别表示字符串的开始结束

这篇关于使用preg_Match进行非常严格的复杂字符串验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:使用preg_Match进行非常严格的复杂字符串验证

基础教程推荐