Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的正则表达式并不酷_Php_Regex - Fatal编程技术网

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&amp;id=db335b">04</a>-072<br />
<a href="updateMooring.php?Number2=04-072&amp;id=db335b">04-072</a>
-072
但是我想让“-072”在第2位,比如:

<a href="updateMooring.php?Number2=04&amp;id=db335b">04</a>-072<br />
<a href="updateMooring.php?Number2=04-072&amp;id=db335b">04-072</a>

它还可以包括/072:

<a href="updateMooring.php?Number2=04/072&amp;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,如果有更好的答案发布,他随时可以修改。当然是这样:)不过,你的答案似乎适合他的用例。有时候简单就是这样。我想知道,如果事先输入肯定是正确的,如果不是,那么答案是接受得有点多,例如“#!/-”符合要求。