Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_仅匹配字母、数字和空格(包括umlauts和类似)_Php_Regex_Preg Match - Fatal编程技术网

Php preg_仅匹配字母、数字和空格(包括umlauts和类似)

Php preg_仅匹配字母、数字和空格(包括umlauts和类似),php,regex,preg-match,Php,Regex,Preg Match,我知道在StackOverflow上有很多这样的问题,但是我找不到我要找的东西 我需要一个正则表达式,它允许字母(包括umlauts和其他类似于öäßè)、数字和空格。因此,没有特殊字符(?!;:#)和破折号(-)或下划线(-)使用Unicode字母类\p{L},来匹配任何字母表中的任何字母(即非ASCII Unicode字母): 演示: 附言 在preg\u match中使用正则表达式时,请注意模式分隔符: preg_match('/^[\d\s\p{L}]+$/', 'öäßè')

我知道在StackOverflow上有很多这样的问题,但是我找不到我要找的东西


我需要一个正则表达式,它允许字母(包括umlauts和其他类似于
öäßè
)、数字和空格。因此,没有特殊字符(
?!;:#
)和破折号(
-
)或下划线(
-

使用Unicode字母类
\p{L}
,来匹配任何字母表中的任何字母(即非ASCII Unicode字母):

演示:

附言

preg\u match
中使用正则表达式时,请注意模式分隔符:

preg_match('/^[\d\s\p{L}]+$/', 'öäßè')
            ^              ^

对不起,我不太擅长正则表达式。在您提到的页面上,它看起来不错,但是使用preg_match时,我得到了未知的修饰符“+”,您可能忘记了在
preg_match()
中使用正则表达式时添加模式分隔符。调用应该类似于
preg_match('/(?:\p{L}\d)+/',…)
。注意这里的斜杠。@Grandy:我在最初的答案中漏掉了空格。现在更新以支持这些。此外,所有字符类都可以列在
[…]
中,这简化了正则表达式。请查看更新后的答案。确定在函数调用(!preg_match)之前有一个否定项。。。但如果字符串中有任何允许的字符(例如:“asdf”和“asdf#”)则返回alsways 1。如果字符串只包含允许的字符,如何才能返回true。。。因此,如果其中有任何不允许的字符,它应该返回falseGot:“/^[\d\s\p{L}]+$/”
preg_match('/^[\d\s\p{L}]+$/', 'öäßè')
            ^              ^