【问题标题】:Remove number then a space from the start of a string删除数字,然后从字符串的开头删除一个空格
【发布时间】:2011-04-08 22:49:15
【问题描述】:

如何从字符串的开头删除数字和空格?

例如,从“13 Adam Court, Cannock”中删除“13”

【问题讨论】:

  • @Null:我想我们会让模组决定做什么。可能合并问题。

标签: php regex replace trim


【解决方案1】:

如果输入的字符串都具有相同的预期格式,并且通过左修剪所有数字和空格(无论它们在字符串前面出现的顺序如何),您将收到相同的结果,那么您实际上不需要启动正则表达式引擎。

我喜欢正则表达式,但除非它比非正则表达式技术提供有价值的优势,否则不要使用它。正则表达式通常比非正则表达式技术慢。

ltrim() 与包含空格和数字的字符掩码一起使用。

代码:(Demo)

var_export(
    ltrim('420 911 90210 666 keep this part', ' 0..9')
);

输出:

'keep this part'

字符串是否以空格开头也没关系。 ltrim() 会贪婪地删除字符串开头的所有空格或数字实例,直到它不能再删除为止。

【讨论】:

    【解决方案2】:

    因为其他人都在走\d+\s路线,所以我会给你脑残的答案

    $str = preg_replace("#([0-9]+ )#","",$str);
    

    明智的说法,不要在正则表达式中使用 / 作为分隔符,在尝试执行文件路径或类似 http://

    时,您会遇到可怕的倾斜牙签问题

    :)

    【讨论】:

    • 明智的说法,如果模式不包含正斜杠,则没有逻辑理由避免正斜杠模式分隔字符。
    【解决方案3】:

    您其他问题上的same regex I gave you 仍然适用。你只需要改用preg_replace()

    搜索/^[\s\d]+/ 并替换为空字符串。例如:

    $str = preg_replace(/^[\s\d]+/, '', $str);
    

    这将从字符串开头以任意顺序删除数字和空格。对于仅删除数字后跟空格的内容,请参阅 BoltClock 的答案。

    【讨论】:

      【解决方案4】:

      我会使用

      /^\d+\s+/

      它在字符串的开头寻找任意大小的数字 ^\d+

      然后在\s+\s+

      之后寻找一块空白

      当您在某些字母前使用反斜杠时,它表示某事...

      \d 代表一个数字 0,1,2,3,4,5,6,7,8,9

      \s 代表一个空格 .

      在末尾添加一个加号 (+) 即可...

      \d+一串数字(数字)

      \s+ 多个空格(错别字等)

      【讨论】:

        【解决方案5】:

        使用我在JavaScript answer 中提供的相同正则表达式,但使用preg_replace() 应用它:

        preg_replace('/^\d+\s+/', '', $str);
        

        【讨论】:

        • 嗯,原来我正在运行正则表达式的变量也会吐出大量 HTML,在这种情况下,删除所有数字仍然是安全的,所以这只是 'd '?非常感谢您的回复!
        • @Probocop:如果您只想从开头删除数字,请使用/^\d+/;如果要删除所有数字,请删除 ^
        • 太棒了,非常感谢! (我真的需要有时间学习正则表达式)
        • 有趣的是,您通过接受我们对每个问题的不同答案,给了我和 NullUserException +15 代表。代表我们感谢 :)
        【解决方案6】:

        试试这个:

        ^\d+ (.*)$
        

        像这样:

        preg_replace ("^\d+ (.*)$", "$1" , $string);
        

        资源:

        关于同一主题:

        【讨论】:

        • 在删除字符后捕获子字符串,然后将其添加回字符串作为替换字符串是不必要的额外工作。字符串锚的结尾也不是必需的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-28
        • 1970-01-01
        • 1970-01-01
        • 2016-09-30
        • 2011-12-22
        • 1970-01-01
        • 2017-07-31
        相关资源
        最近更新 更多