【问题标题】:Zend - Regex allow whitespace and unicode charactersZend - 正则表达式允许空格和 unicode 字符
【发布时间】:2011-12-15 16:33:49
【问题描述】:

我有一个正则表达式的问题,它允许我输入一个名称,让我们说一个机构是否可以包含其他语言的特殊字符、空格和 - char。 我知道我创建的表达式:

/^[a-zA-Z- "\']*$/

将允许从 a 到 z 的字符和 -'" 字符和空格。但是当我键入 żźćąś 或其他语言时,特殊字符字符串无效,但我希望它有效。

我创建的第二个表达式:

/^[^\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\`\\1\\2\\3\\4\\5\\6\\7\\8\\9\\0\\_\\+\\=\\{\\}\\:\\"\\;\\\\\<\\>\\?\\,\\.\\/\ ]*$/

允许 a-z 字符,而没有上面不允许的字符。但是我不允许在上面的正则表达式中使用空格,但是当我输入带有空格的内容时,例如:

"Bielsko Biała"

它无效,但是当我一起输入时:

"BielskoBiała"

它对 ą 字符有效。所以我想允许特殊字符,如 żźćąśł 和其他语言的其他字符,但也想允许空格,我不知道该怎么做。

当我使用 Alpha 验证器时,它没问题,但不允许放置 -'" 字符,我也想允许。

【问题讨论】:

    标签: php regex zend-framework validation


    【解决方案1】:

    首先,您必须使用 u 开关启用 UTF-8 支持。然后,您可以将 unicode 字母与序列 \pL 匹配。见here

    所以你的解决方案是

    /^[\pL- "\']*$/u
    

    【讨论】:

    • 如果我错了,请纠正我。 pl 表示波兰特殊字符是吗?所以我必须添加其他语言的快捷方式也允许其他语言特殊字符?
    • L 表示所有字母 :) 好的,它可以正常工作 ;) 现在我明白了 ;) 谢谢。问题解决了
    • 您可以通过\p{Language}选择语言。上面的链接中提供了语言列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多