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

时间:2013-02-17 06:25:09

标签: php regex preg-match

我正在尝试检查用户输入是拉丁语还是西里尔语。我想让用户输入一个只有拉丁文或西里尔字母的文本。我如何允许并拒绝另一个?我不希望用户混合拉丁语和西里尔语。它只是一个或另一个。我是正则表达式的新手,无法找到一种方法。 这是我到目前为止所拥有的。

!preg_match("/^([a-zA-Z]+|[\p{Cyrillic}]+)$/u", $inputstr)

此外,开头和结尾的“/”是什么?那个“/你”做什么? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

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

首先,开头和结尾的/是什么?那是delimeter pattern封闭你的正则表达式。

其次,u是什么?这是一个modifier来将模式字符串视为unicode。

要仅允许一种类型的char,请使用分组,如下所示:/^(?:\p{Cyrillic}+|\p{Latin}+)$/u

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

(?:stuff)是匹配但未捕获的分组subpattern