感谢S. Gehrig在initial question中的回答我得到了一个正常的正则表达式并且根据Letter属性验证变量(除了中文,但这是另一个主题:):
if (preg_match('/^\p{L}+$/u', $input)) {
// OK
}
不幸的是,我不能将其扩展到支持数字相应的问题/感叹&合。我的实验包括:
'/^[\p{L}]|[0-9]|[\n]|[']|[\?]|[\!]|[\.]|[\,]+$/u'
'/^[\p{L}+]|[0-9]|[\n]|[']|[\?]|[\!]|[\.]|[\,]$/u'
'/^[\p{L}+]|[0-9]|[\n]|[']|[\?]|[\!]|[\.]|[\,]$/u'
正确的正则表达式是什么?请指出我正确的方向。
很多,非常感谢!
答案 0 :(得分:1)
\p{L}+
已经是“\p{L}
的非空字符串”。另一方面,[]
表示“其中一个”,因此根据您的实际要求,其中任何一个都应该有效:
序列中任何(正,非零)指定字符数:
/^[\p{L}0-9\n'?!.,]+$/u
\p{L}
s序列或混合[0-9\n'?!.,]
序列:
/^(\p{L}+|[0-9\n'?!.,]+)$/u
\p{L}
s序列或[0-9\n'?!.,]
/^(\p{L}+|[0-9\n'?!.,])$/u