在字符串的开头允许单个字母字符

时间:2011-08-10 10:07:47

标签: php regex

我有这个pregmatch只允许数字字符,但我需要在字符串的开头允许一个字母字符的潜力,如

T17900

$value = preg_replace("/[^0-9\s]/", "", $value);

实施例

如果这是我的$ value = 22202-HAV.jpg

我只需 22202。

如果这是我的$ value = T22202-HAV.jpg

我只需要 T22202

3 个答案:

答案 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;
}

in action

我不明白你为什么在你的模式中需要这个\s,但既然它在那里,我也把它添加到我的答案代码中