如何匹配 PHP 正则表达式中的空格字符?
我的意思是像“gavin schulz”,两个词之间的空格。我使用正则表达式来确保我只允许字母、数字和空格。但我不知道如何找到空间。这就是我现在所拥有的:
$newtag = preg_replace("/[^a-zA-Z0-9s|]/", "", $tag);
原文由 Gavin Schulz 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何匹配 PHP 正则表达式中的空格字符?
我的意思是像“gavin schulz”,两个词之间的空格。我使用正则表达式来确保我只允许字母、数字和空格。但我不知道如何找到空间。这就是我现在所拥有的:
$newtag = preg_replace("/[^a-zA-Z0-9s|]/", "", $tag);
原文由 Gavin Schulz 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是您需要了解的有关正则表达式中空格的所有内容的小备忘单:
[[:blank:]]
仅限空格或制表符,而不是换行符。这与写 [ \t]
相同。
[[:space:]]
& \s
[[:space:]]
和 \s
是一样的。它们都将匹配任何空白字符空间、换行符、制表符等……
\v
匹配垂直 Unicode 空白。
\h
匹配 水平 空白,包括 Unicode 字符。它还将匹配空格、制表符、不间断/数学/表意空格。
x
(e X 倾向于标志)忽略所有空格。请记住,这是一个标志,因此您将其添加到正则表达式的末尾,例如 /hello/gmx
。此标志将忽略正则表达式中的空格。
例如,如果您编写类似 /hello world/x
的表达式,它将匹配 helloworld
,但不匹配 --- hello world
。扩展标志还允许在您的正则表达式中添加注释。
/helloworld #hello this is a comment/
如果需要使用空格,可以使用 \
来匹配空格。
原文由 Fletcher Rippon 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答569 阅读✓ 已解决
785 阅读
如果您正在寻找一个空格,那就是
" "
(一个空格)。如果您正在寻找一个或多个,它是
" *"
(即 两个 空格和一个星号)或" +"
(一个空格和一个加号)。如果您正在寻找公共间距,请使用
"[ X]"
或"[ X][ X]*"
或"[ X]+"
其中每个X
是物理制表符(和 30029833594da063abec4c2f742)在所有这些示例中,前面都有一个空格)。这些将适用于我见过的 每个\* 正则表达式引擎(其中一些甚至没有一个或多个
"+"
字符,呃)。如果您知道您将使用更现代的正则表达式引擎之一,
"\s"
及其变体是可行的方法。此外,我相信单词边界也匹配行的开头和结尾,这在您查找可能出现的单词之前或之后没有空格时很重要。特别是对于 PHP, 此页面 可能会有所帮助。
从您的编辑中,您似乎想要删除所有无效字符这开始是(注意正则表达式内的空格):
如果您还想要欺骗以确保每个单词之间只有一个空格,并且在开头或结尾处没有空格,那会稍微复杂一些(可能是另一个问题),但基本思想是: