我正在尝试检查用户输入是拉丁语还是西里尔语。我想让用户输入一个只有拉丁文或西里尔字母的文本。我如何允许并拒绝另一个?我不希望用户混合拉丁语和西里尔语。它只是一个或另一个。我是正则表达式的新手,无法找到一种方法。 这是我到目前为止所拥有的。
!preg_match("/^([a-zA-Z]+|[\p{Cyrillic}]+)$/u", $inputstr)
此外,开头和结尾的“/”是什么?那个“/你”做什么? 任何帮助表示赞赏。
答案 0 :(得分:3)
文档zerkms链接回答了您的一些问题。
首先,开头和结尾的/
是什么?那是delimeter pattern封闭你的正则表达式。
其次,u
是什么?这是一个modifier来将模式字符串视为unicode。
要仅允许一种类型的char,请使用分组,如下所示:/^(?:\p{Cyrillic}+|\p{Latin}+)$/u
这应该匹配西里尔字母或拉丁字符,但不能同时匹配同一个字符串。
(?:stuff)
是匹配但未捕获的分组subpattern。