我有一个字符串如下。
$string = '2346#$ABSC$%#@#234567';
我想要这个字符串中最后一个不是数字或特殊字符的字符。它可能只是一个字母(在字母或字母)。在这种情况下,我只需要这个字符串中的“C”。我试过这个公式:
substr($string, -1);
zfciruhq1#
您应该使用类似preg_match()的东西来查看正则表达式这样的表达式将匹配:
preg_match()
/([a-z])[^a-z]*$/i
意思是:
([a-z])
i
[^a-z]*$
参见an example。
efzxgjgh2#
这应该对你有用:(Here我只是把除了a-zA-Z之外的所有东西都替换为一个空字符串。在此之后,我只是访问最后一个字符)
a-zA-Z
<?php $string = '2346#$ABSC$%#@#234567'; $string = preg_replace("/[^a-zA-Z]/", "", $string); echo $string[strlen($string)-1]; ?>
产出:
C
unhi4e5o3#
正确的regex是:([a-z])[^a-z]*$
([a-z])[^a-z]*$
f3temu5u4#
正如这个答案所展示的那样,使用正则表达式模式来隔离最后一个字母,后面只有零个或多个非字母,然后是字符串的结尾。不需要捕获组。代码:(Demo)
$string = '2346#$ABSC$%#@#234567'; echo preg_match('/[a-z](?=[^a-z]*$)/i', $string, $m) ? $m[0] : 'not found'; // outputs: C
4条答案
按热度按时间zfciruhq1#
您应该使用类似
preg_match()
的东西来查看正则表达式这样的表达式将匹配:
意思是:
([a-z])
捕获一个a-z字符(末尾的i
使其不区分大小写)[^a-z]*$
后跟0个或多个非a-z字符,直到字符串结束参见an example。
efzxgjgh2#
这应该对你有用:
(Here我只是把除了
a-zA-Z
之外的所有东西都替换为一个空字符串。在此之后,我只是访问最后一个字符)产出:
unhi4e5o3#
正确的regex是:
([a-z])[^a-z]*$
f3temu5u4#
正如这个答案所展示的那样,使用正则表达式模式来隔离最后一个字母,后面只有零个或多个非字母,然后是字符串的结尾。
不需要捕获组。
代码:(Demo)