草庐IT

php - RegEx (.*?) 除了一个字符之外的任何东西

我正在尝试将某些内容与/^(.*?)\/$行之间的模式相匹配。但是,由于(.*?)已经匹配/它也匹配anything//////////但我只希望它匹配anything/。是否有从(.*?)或其他解决方案中排除/的好方法? 最佳答案 使用negatedcharacterclass[^\/]:/^([^\/]*)\/$/参见regexdemo在PHP中,您可以使用其他一些分隔符来避免模式中的过度转义,比如~:$rx='~^([^/]*)/$~';详细信息:^-字符串的开始([^\/]*)-第1组捕获除/以外的0+个字符\/-文字/$-

php正则表达式找到太多

我想转这个:[title->link]为此:title所以我有这行代码$content=preg_replace('/\[(.*)\-\>(.*)\]/','$1',$content);关于thisdemo,它运行良好但不适用于我的代码。问题是它将“[”字符计为普通字符,因为如果是第一个(.*)。所以如果在...之前还有另一个“[”,那么第一组可能会很长blabla[...]blabla[标题->链接]这里的粗体是我的第一组,但这不是我想要的......如何让第一组停止第一组“[”到majesutejuste“title”是第一组? 最佳答案

php - 正则表达式在冒号后的每个单词周围加上引号

我想在每个表达定义的词周围加上引号。所有单词都必须以冒号结尾。例如:def1:"someexplanation"def2:"otherexplanation"必须转换为"def1":"someexplanation""def2":"otherexplanation"如何在PHP中使用preg_replace编写此代码?我有这个:preg_replace('/\b:/i','"$0"','def1:"someexplanation"')但它只引用冒号,而不引用单词:key":""value" 最佳答案 解决方法:preg_replac

php - 电子邮件的正则表达式显示用户和域的第一个和最后一个字母

我是正则表达式的新手,我正在尝试用一些字符替换php中的星号,如下所示:邮箱:victor@gmail.com->v****r@g***l.com我这样做了:$email=preg_replace('/(?:^|@).\K|\.[^@]*$(*SKIP)(*F)|.(?=.*?\.)/','*',$linha['cli_email']);问题是输出是v*****@g****.com而不是v*****r@g***l.com而且我不知道如何显示用户名的最后一个和电子邮件提供商的最后一个。 最佳答案 你可以试试这个:$email=preg

php - 转义某些字符不起作用

我确定这是重复的,但我无法通过搜索找到答案。这是我的代码str_replace(['',-,\(,\),\*,-,\|,\/],'',$params['电话']),'0'那行得通。我想要的是:str_replace(['',-,\(,\),/,|,\*,-,\#,\],'',$params['电话']),'0'只要我添加#或\它就会失败,并且转义它们似乎不起作用。有没有其他方法可以避开它们?虽然它看起来有效,但它似乎并没有取代初始空间。这可能是我问题的根源吗? 最佳答案 你要去掉一个空格,-,(,),*,-、|、/以及字符串中的\和

php - 如何检查第五个和第六个字符是特定的两位数?

我想验证电话号码。唯一有效的电话号码是这样开头的:+3620|+3630|+3631|+3670我的代码看起来像这样,但现在您可以输入我想避免的+3621或+3671。如何检查两位数?比如70或30。$phone='+36701234567';if(preg_match('|^\+36[237][01][1-9][0-9]{2}[0-9]{2}[0-9]{2}$|',$phone)){echo'phonenumberisgood';} 最佳答案 如果你想要一些非常具体的数字:/^\+36(20|30|31).../如您所见,使用集合

如果最后三个字符包含两个字母,则 PHP 正则表达式匹配

基本上我有这个,但它要么:[en].{0,2}$我想要做的是检测“en”而不是“e”或“n”。只是按顺序“en”,但在最后三个字符中。所以应该匹配attend但不是:attained所以它必须检测最后三个字符是否按顺序包含'en'。 最佳答案 Just'en'inthatorderbutinthelastthreecharacters.这意味着您需要匹配字符串末尾的en或字符串末尾后面有任何单个字符的en。你可以使用en.?$参见regexdemo详情en-en子串.?-任何可选的字符$-字符串结尾。如果输入中可能有换行符,请使用s

PHP 正则表达式最后一次出现的单词

我的字符串是:/var/www/domain.com/public_html/foo/bar/folder/another/..我想从这个字符串中删除根文件夹,只得到公共(public)文件夹,因为有些服务器里面有多个网站。我实际的正则表达式是:/^(.*?)(www|public_html|public|html)/s我的实际结果是:/domain.com/public_html/foo/bar/folder/another/..但我想删除最后一个ocorrence,并得到这样的东西:/foo/bar/folder/another/..谢谢! 最佳答案

php - 在 PHP 中提取与 CAS 编号模式匹配的所有字符串值

好的,所以我开始从上传的SDS文件中提取CAS编号(在我转向pdf之前处理docx)。我已经成功地将docx转换为页面中的字符串,但是如果它们存在,我需要提取几个字符串。这是我正在使用的代码,我认为我根本没有正确使用preg_match_all。$docObj=newDocxConversion($_FILES["sdsFile"]["tmp_name"]);$docText=$docObj->convertToText();preg_match_all("/[0-9]{2,7}-[0-9]{2}-[0-9]{1}/",$docText,$matches);print_r($match

php - 用于从字符串中提取所有 url 的正则表达式

我正在尝试从一段字符串中提取URL我有不同的帖子在他们的消息中包含URL。我已经准备好匹配的模式,但它无法正常工作。尝试正则表达式$pattern1='%\b((https?://)|(www\.)|(^[\D]+\.))[^,\s()]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))%';$pattern2='%\b^((https?://)|(www\.)|(^[a-z]+\.))([a-z0-9-].?)+(:[0-9]+)?(/.*)?$%';代码for($i=0;$i我的帖子的例子是这样的"Thisisjustaposttotestregexforex