首页 文章

匹配正则表达式中的空格

提问于
浏览
173

我需要匹配PHP正则表达式中的空格字符 . 有人有任何想法吗?

我的意思是“gavin schulz”,这两个词之间的空间 . 我使用正则表达式来确保我只允许字母,数字和空格 . 但我不确定如何找到空间 . 这就是我现在所拥有的:

$newtag = preg_replace("/[^a-zA-Z0-9s|]/", "", $tag);

9 回答

  • 5

    如果你正在寻找一个空间,那将是 " " (一个空格) .

    如果你're looking for one or more, it'(这是两个空格和一个星号)或 " +" (一个空格和一个加号) .

    如果您正在寻找公共间距,请使用 "[ X]""[ X][ X]*""[ X]+" ,其中 X 是物理制表符(在所有这些示例中,每个字符前面都有一个空格) .

    这些将在每个*正则表达式引擎中工作,甚至还有一个或多个 "+" 字符,呃) .

    如果你知道你将使用一个更现代的正则表达式引擎, "\s" 及其变化是要走的路 . 另外,我相信单词边界也匹配行的开头和结尾,当你在寻找可能没有前后空格的单词时很重要 .

    特别是对于PHP,this page可能会有所帮助 .

    从您的编辑中,您似乎想要删除所有无效字符 . 这是开头(请注意正则表达式中的空格):

    $newtag = preg_replace ("/[^a-zA-Z0-9 ]/", "", $tag);
    #                                    ^ space here
    

    如果你也想要欺骗以确保每个单词之间只有一个空格,并且在开头或结尾都没有空格,那就更复杂了(可能是另一个问题),但基本的想法是:

    $newtag = preg_replace ("/ +/", " ", $tag); # convert all multispaces to space
    $newtag = preg_replace ("/^ /", "", $tag);  # remove space from start
    $newtag = preg_replace ("/ $/", "", $tag);  # and end
    
  • 38

    \040 与空格字符完全匹配 .

    Regexp PHP reference

    新链接
    Escape sequences for Regex PHP

  • 295

    以下是您需要了解的关于正则表达式中的空格的所有内容:

    • [[:blank:]] 仅限空格或制表符

    • [[:space:]] 空白

    • \s 任何空格字符

    • \v 垂直空白

    • \h 水平空格

    • x 忽略空格

  • 5

    在我看来,在这种情况下使用REGEX只会有点矫枉过正 . 为什么不只是strpos找到空格字符 . 此外,正则表达式中的空格字符没有什么特别之处,您应该能够像搜索任何其他字符一样搜索它 . 也就是说,除非您禁用了模式空白,否则在这种情况下几乎不需要 .

  • 1

    在Perl中,开关是 \s (空格) .

  • 1

    您还可以使用\ b作为单词边界 . 对于名称,我会使用这样的东西:

    [^\b]+\b[^\b]+(\b|$)
    

    EDIT 在Perl示例中将其修改为正则表达式

    if( $fullname =~ /([^\b]+)\b[^\b]+([^\b]+)(\b|$)/ ) {
     $first_name = $1;
     $last_name = $2;
    }
    

    EDIT AGAIN 根据您的需要:

    $new_tag = preg_replace("/[\s\t]/","",$tag);
    
  • 7

    我正在使用正则表达式来确保我只允许字母,数字和空格

    然后就像为你已经拥有的东西添加空间一样简单:

    $newtag = preg_replace("/[^a-zA-Z0-9 ]/", "", $tag);
    

    (注意,我删除了 s| ,这似乎是无意的?当然 s 是多余的;你可以恢复 | 如果你需要它)

    如果你特别想要* a *空格,就像只有一个空格一样,你需要一个比这更复杂的表达式,并且可能想要考虑一个单独的非正则表达式逻辑 .

  • 3

    我正在尝试[[:space:]]在一个实例中,看起来像WordPress中的博主正在使用非标准的空格字符 . 看起来它会起作用 .

  • 3

    像这样使用它以允许单个空间 .

    $newtag = preg_replace("/[^a-zA-Z0-9\s]/", "", $tag)
    

相关问题