使用短划线符号删除除最后一个变量之外的所有字符

时间:2015-05-21 10:41:06

标签: php preg-replace

您好我想在php中使用preg_replace删除一个字符,所以我在这里有这个代码,我想删除整个字符,字母和数字,除了最后一个数字,其中有短划线( - )符号后跟数字所以这是我的代码。

echo preg_replace('/(.+)(?=-[0-9])|(.+)/','','asdf1245-10');

我希望结果是

-10

上面的问题不是很好。我使用http://www.regextester.com/检查了模式它似乎有效,但另一方面http://www.phpliveregex.com/根本不起作用。我不知道为什么会有人帮助解决这个问题?

非常感谢

4 个答案:

答案 0 :(得分:2)

这是一种方法:

echo preg_replace('/^.+?(-[0-9]+)?$/','$1','asdf1245-10');

<强>输出:

-10

echo preg_replace('/^.+?(-[0-9]+)?$/','$1','asdf124510');

<强>输出:

<nothing>

答案 1 :(得分:0)

我的第一个想法是在这种情况下使用 explode ..让它像下面的代码一样简单。

$string = 'asdf1245-10';
$array = explode('-', $string);
end($array);
$key = key($array);
$result = '-' . $array[$key];

$ result =&gt; &#39; -10&#39 ;;

答案 2 :(得分:0)

另一种方式:

$result = preg_match('~\A.*\K-\d+\z~', $str, $m) ? $m[0] : '';

模式细节:

\A     # start of the string anchor
.*     # zero or more characters
\K     # discard all on the left from match result
-\d+   # the dash and the digits
\z     # end of the string anchor

答案 3 :(得分:0)

echo preg_replace('/(\w+)(-\w+)/','$2', 'asdf1245-10');