Php 我的正则表达式并不酷
我当前的一个几乎可以完美工作,但它忽略了字符后面的任何其他数字,如-或/Php 我的正则表达式并不酷,php,regex,Php,Regex,我当前的一个几乎可以完美工作,但它忽略了字符后面的任何其他数字,如-或/ 原始字符串类似于: #!012 , #!02/09#!011 #!04-072 preg_replace('~#!([0-9A-Z][0-9A-Z/-]{0,5})~', '<a href="updateMooring.php?Number2=${1}&id='. $id .'">${1}</a>', $viewedResult); 我当前的一个可以处理如下内容: $viewedRes
原始字符串类似于:
#!012 , #!02/09#!011 #!04-072
preg_replace('~#!([0-9A-Z][0-9A-Z/-]{0,5})~', '<a href="updateMooring.php?Number2=${1}&id='. $id .'">${1}</a>', $viewedResult);
我当前的一个可以处理如下内容:$viewedResult=preg_replace('/#!([0-9A-Z]{1,4})/','','$viewedResult)代码>
这会给我一些类似的信息:
<a href="updateMooring.php?Number2=04&id=db335b">04</a>-072<br />
<a href="updateMooring.php?Number2=04-072&id=db335b">04-072</a>
-072
但是我想让“-072”在第2位,比如:
<a href="updateMooring.php?Number2=04&id=db335b">04</a>-072<br />
<a href="updateMooring.php?Number2=04-072&id=db335b">04-072</a>
它还可以包括/072:
<a href="updateMooring.php?Number2=04/072&id=db335b">04/072</a>
有什么想法吗?记住有一个#!在号码前面 您可以使用以下内容:
#!012 , #!02/09#!011 #!04-072
preg_replace('~#!([0-9A-Z][0-9A-Z/-]{0,5})~', '<a href="updateMooring.php?Number2=${1}&id='. $id .'">${1}</a>', $viewedResult);
preg_replace(“~#!”([0-9A-Z][0-9A-Z/-]{0,5})~”,“$viewedResult);
如果需要数字2的值,请使用:
Number2\s*=\s*([^;"]*)[;"]
然后使用第一个捕获组。愚蠢的问题:为什么不使用这个正则表达式!([0-9A-Z/-]{1,4})/
旁注:{1,4}
阻止您检索值04-072
(长度为6个字符)
希望有帮助:)我将正则表达式一分为二,因为我认为您希望匹配类似于
\d{1..4}[-/]?\d{1..4}
的内容,其中第一组和第二组数字总共为4。最好只查找(\d+[-/]/d+
,然后检查总位数大小是否正确,例如,在结果中查找(\d+
)的所有匹配项,并以编程方式检查其长度
一般来说,我会密切关注什么是允许的输入,以及如果输入不匹配,您将得到什么(错误)。将内容拆分将更容易显示正确的错误消息,例如“系泊点中的位数不正确”(我猜这就是原因)。在替换之前,您能显示原始字符串吗?呃,我讨厌这些快速接受,请稍等片刻,看看是否有不同/更好的答案,有些人还在敲键盘。@owlstead,如果有更好的答案发布,他随时可以修改。当然是这样:)不过,你的答案似乎适合他的用例。有时候简单就是这样。我想知道,如果事先输入肯定是正确的,如果不是,那么答案是接受得有点多,例如“#!/-”符合要求。