【问题标题】:regular expression for French characters法语字符的正则表达式
【发布时间】:2009-12-17 14:19:28
【问题描述】:

我需要一个函数或正则表达式来验证包含字母字符(包括法语字符)、减号 (-)、点 (.) 和空格(不包括其他所有字符)的字符串

谢谢

【问题讨论】:

    标签: php regex


    【解决方案1】:
    /^[a-zàâçéèêëîïôûùüÿñæœ .-]*$/i
    

    使用/i 不区分大小写以使事情变得更简单。如果您不想允许空字符串,请将@​​987654323@ 更改为+。

    【讨论】:

    • 严格来说ñ不是法语,但OP没有明确排除非法语字符。
    • 法语不使用正则表达式试图匹配的某些字符,如果它想匹配法语等语言中使用的所有字符,正则表达式不够通用。
    • @kiamluno,除了 ñ french 使用所有其他提到的字符,其中一些只有几个词,例如“où”(哪里)或“L'Haÿ-les-Roses”(巴黎附近的一个城市)
    • @Amber,我认为u 模式修饰符在这里很合适,n'est-ce pas?
    • 这种方法的问题在于像«Björn Borg roi de Paris!»这样的报纸头条新闻!
    【解决方案2】:

    简化解决方案:

    /^[a-zA-ZÀ-ÿ-. ]*$/

    解释:

    ^ Start of the string [ ... ]* Zero or more of the following: a-z lowercase alphabets A-Z Uppercase alphabets À-ÿ Accepts lowercase and uppercase characters including letters with an umlaut - dashes . periods spaces $ End of the string

    【讨论】:

    • 我认为À-ÿ 是错误的。不应该是À-Ÿ(example)吗?
    • 是的,你是对的。
    【解决方案3】:

    试试:

    /^[\p{L}-. ]*$/u
    

    这说:

    ^         Start of the string
    [ ... ]*  Zero or more of the following:
      \p{L}     Unicode letter characters
      -         dashes
      .         periods
                spaces
    $         End of the string
    /u        Enable Unicode mode in PHP
    

    【讨论】:

      【解决方案4】:

      我一直使用的字符类如下:

      [\wÀ-Üà-øoù-ÿŒœ]。这涵盖了比仅法语稍大的字符集,但不包括与法语无关的大部分东欧和斯堪的纳维亚变音符号和字母。我发现这是简洁和排他性之间的一个不错的折衷方案。

      为了匹配/验证完整的句子,我使用这个表达式: [\w\s.,!?:;&#%’'"()«»À-Üà-øoù-ÿŒœ],包括标点符号和法式引号。

      【讨论】:

        【解决方案5】:

        这行正则表达式通过所有 cirano de bergerac 法语文本: (您需要删除标记语言字符 http://www.gutenberg.org/files/1256/1256-8.txt

        ^([0-9A-Za-z\u00C0-\u017F\ ,.\;'\-()\s\:\!\?\"])+
        

        【讨论】:

        • 你正在转义一堆不需要在字符类中转义的东西
        【解决方案6】:

        只需使用以下代码:

             /[\u00C0-\u017F]/
        

        【讨论】:

          【解决方案7】:

          这可能适合:

          /^[ a-zA-Z\xBF-\xFF\.-]+$/
          

          它允许输入一些额外的字符,例如 ÷,但它可以处理相当多的重音字符。

          【讨论】:

            【解决方案8】:

            /[A-Za-z-\.\s]/u 应该可以工作.. /u 开关用于 UTF-8 编码

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-05-10
              • 2012-05-06
              • 1970-01-01
              • 2011-04-18
              • 2013-12-31
              • 1970-01-01
              相关资源
              最近更新 更多