0

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

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

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

4

1 回答 1

3

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

首先,什么是/开头和结尾?那是包含您的正则表达式的分隔符模式。

第二,什么是u?这是将模式字符串视为 unicode的修饰符。

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

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

(?:stuff)是匹配但不捕获的分组子模式。

于 2013-02-17T06:46:48.957 回答