我有这个pregmatch只允许数字字符,但我需要在字符串的开头允许一个字母字符的潜力,如
T17900
$value = preg_replace("/[^0-9\s]/", "", $value);
实施例
如果这是我的$ value = 22202-HAV.jpg
我只需 22202。
如果这是我的$ value = T22202-HAV.jpg
我只需要 T22202
答案 0 :(得分:1)
$value = preg_replace('~^([a-z][0-9]*|[0-9]+)?.*~i', "$1", $value);
基本上,如果字符串以字母+某些数字或仅数字开头,请保留此部分并删除其余部分。
答案 1 :(得分:0)
$value = preg_replace("/^[A-Z][0-9]*/", "", $value);
^用于position = start
答案 2 :(得分:0)
在这种情况下,我不会使用preg_replace
,而是使用preg_match
代替:
<?php
foreach(array('22202-HAV.jpg', 'T22202-HAV.jpg') as $value) {
if (preg_match("/(?P<name>(?:\A[[:alpha:]])?[0-9\s]*)/", $value, $match)) {
$value = $match['name'];
}
echo $value.PHP_EOL;
}
我不明白你为什么在你的模式中需要这个\s
,但既然它在那里,我也把它添加到我的答案代码中