我想检查输入是否是波斯语,并且至少有3个字符。当我使用下面的regex时,它会工作。它检查单词的开头是否是波斯语,但我希望它也以波斯语结尾,并且不包含英文字母和数字。
/^[ئابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهآی\s]{3,}/为了确保它以波斯语结尾,我在$之后添加了],但是我得到了以下错误:
警告: preg_match():编译失败:在偏移量77处没有重复 /^ئابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهآی\s${3,}/
此外,结束括号\s之前的]是什么?这是新的生产线吗?
发布于 2015-06-03 15:03:22
要匹配阿拉伯字母,可以使用:
^[\x{600}-\x{6FF}]{3,}$if (preg_match('/^[\x{600}-\x{6FF}]{3,}$/u', $value)) {
# match
} else {
# no match
}发布于 2015-06-03 14:46:51
使用
/^[ئابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهآی\s]{3,}$/u$是行/字符串锚点的末尾,是不可量化的(即不能在其之后使用+、*或{1,} )。
请参阅演示
至于\s,它只匹配这个集合:[\r\n\t\f ]的空白。
编辑:使用Rishida Unicode转换器,i 重写你的表情使用\x块:
/^[\x{626}-\x{628}\x{67E}\x{62A}-\x{62C}\x{686}\x{62D}\x{62E}\x{62F}-\x{632}\x{698}\x{633}-\x{63A}\x{641}\x{642}\x{6A9}\x{6AF}\x{644}-\x{648}\x{622}\x{6CC}]{3,}$/u它不允许使用空格,而且看起来比^[ئابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهآی]{3,}$的也应该起作用更好看(BTW,在MS中,它看起来更漂亮:)。
https://stackoverflow.com/questions/30623332
复制相似问题