Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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正则表达式检查字符串是拉丁文还是西里尔文_Php_Regex_Preg Match - Fatal编程技术网

PHP正则表达式检查字符串是拉丁文还是西里尔文

PHP正则表达式检查字符串是拉丁文还是西里尔文,php,regex,preg-match,Php,Regex,Preg Match,我试图检查用户输入的是拉丁文还是西里尔文。我想让用户输入一个只有拉丁或西里尔字母的文本。我如何允许一个,拒绝另一个?我不希望用户混合拉丁语和西里尔语。这只是其中之一。我对regex还不熟悉,想不出一个办法。 这是我到目前为止所拥有的 !preg_match("/^([a-zA-Z]+|[\p{Cyrillic}]+)$/u", $inputstr) 还有,开头和结尾的“/”是做什么的?“/u”是做什么的? 感谢您的帮助。zerkms链接的文档解答了您的一些问题 首先,开头和结尾的/是什么?这是

我试图检查用户输入的是拉丁文还是西里尔文。我想让用户输入一个只有拉丁或西里尔字母的文本。我如何允许一个,拒绝另一个?我不希望用户混合拉丁语和西里尔语。这只是其中之一。我对regex还不熟悉,想不出一个办法。 这是我到目前为止所拥有的

!preg_match("/^([a-zA-Z]+|[\p{Cyrillic}]+)$/u", $inputstr)
还有,开头和结尾的“/”是做什么的?“/u”是做什么的?
感谢您的帮助。

zerkms链接的文档解答了您的一些问题

首先,开头和结尾的
/
是什么?这是随附的正则表达式

第二,什么是
u
?这是一种将模式字符串视为unicode的方法

要仅允许一种类型的字符,请使用分组,如下所示:
/^(?:\p{西里尔语}+\p{拉丁语}+$/u

应该匹配西里尔字母或拉丁字母,但不能在同一字符串中同时匹配


(?:stuff)
是一个匹配但不捕获的分组。

zerkms链接的文档回答了您的一些问题

首先,开头和结尾的
/
是什么?这是随附的正则表达式

第二,什么是
u
?这是一种将模式字符串视为unicode的方法

要仅允许一种类型的字符,请使用分组,如下所示:
/^(?:\p{西里尔语}+\p{拉丁语}+$/u

应该匹配西里尔字母或拉丁字母,但不能在同一字符串中同时匹配


(?:stuff)
是一个匹配但不捕获的分组。

我确实很费劲,无法找到解决问题的方法。如果可以,你可以帮忙。如果你不能留下毫无帮助的评论,至少关于斜杠和
u
修饰符(提示:Unicode以字母
u
开头)的问题应该很容易从文档中回答。但更重要的问题是:“全拉丁”或“全西里尔”字符串可能包含哪些字符?标点符号?空白?符号?哪一个?谢谢蒂姆。拉丁语和西里尔语只包含字母,没有拼音、空格或符号。正如我所说,我读过文档,很难弄清楚我需要什么和不需要什么,因为有太多的信息。你真的应该停止发表非建设性的评论和评判性的评论。我确实很麻烦,也找不到解决问题的办法。如果可以,你可以帮忙。如果你不能留下毫无帮助的评论,至少关于斜杠和
u
修饰符(提示:Unicode以字母
u
开头)的问题应该很容易从文档中回答。但更重要的问题是:“全拉丁”或“全西里尔”字符串可能包含哪些字符?标点符号?空白?符号?哪一个?谢谢蒂姆。拉丁语和西里尔语只包含字母,没有拼音、空格或符号。正如我所说,我读过文档,很难弄清楚我需要什么和不需要什么,因为有太多的信息。你真的应该停止留下非建设性和评判性的评论?还有:你呢?我会查阅手册,但不知道他们在做什么,我只会浪费时间去寻找。非常感谢。很好用!如果我想添加空格和连字符,正则表达式会像这样吗/^(?:\p{Cyrillic}-+\p{Latin}-+)$/u如果需要字符类。代替
\p{Latin}
do
[\p{Latin}\s-]
,另一个也一样。谢谢。如果可能的话,我会不止一次地投票支持你的问题:)答案是什么?还有:你呢?我会查阅手册,但不知道他们在做什么,我只会浪费时间去寻找。非常感谢。很好用!如果我想添加空格和连字符,正则表达式会像这样吗/^(?:\p{Cyrillic}-+\p{Latin}-+)$/u如果需要字符类。代替
\p{Latin}
do
[\p{Latin}\s-]
,另一个也一样。谢谢。如果可能的话,我会不止一次地投票支持你的问题:)