【问题标题】:Android: Accept all special characters in regexAndroid:接受正则表达式中的所有特殊字符
【发布时间】:2012-12-26 11:35:11
【问题描述】:

我通过允许特定字符使用正则表达式验证 Edittext 因为我需要允许所有特殊字符在编辑文本中输入。

允许使用代码中的字母和数字

edittext.setFilters(new InputFilter[] { new PartialRegexInputFilter(
                    "[a-zA-z0-9]+") });

像这样我需要允许所有特殊字符...

我也试着像这样给予

edittext.setFilters(
new InputFilter[] 
    { new PartialRegexInputFilter(
        "[A-Za-z0-9!#$%&(){|}~:;<=>?@*+,./^_`-\'\" \t\r\n\f]+") 
    }
);` . 

但这会给单引号和双引号字符带来错误...

【问题讨论】:

  • 定义“特殊字符”?
  • 那么你的问题是什么?
  • 您知道如何为alphanumeric characters 做这件事。现在只需否定它即可获得所有其他字符。如果这不起作用,请在您的问题中添加特殊字符的定义。
  • 它会根据用户在前端的定义而改变...有时他们会定义只输入带有特殊字符的数字..
  • 我也尝试像这样 [A-Za-z0-9!#$%&(){|}~:;?@*+,./^_` -\'\" \t\r\n\f]。但这会给单引号和双引号字符带来错误...

标签: java android regex special-characters validation


【解决方案1】:

您有什么要禁止的吗?听起来您正在尝试允许所有字母数字字符允许所有非字母数字(即特殊)字符。

以下正则表达式将匹配所有特殊字符:

[^A-Za-z0-9]

【讨论】:

    【解决方案2】:

    我认为你的第二个模式的问题是你的字符集中间的连字符(-)。移到最后:

    [A-Za-z0-9!#$%&(){|}~:;<=>?@*+,./^_`\'\" \t\r\n\f-]+
    

    连字符不能在中间,因为它们指定字符范围 [a-z] 指定 a 到 z 之间的所有小写字母。

    【讨论】:

      【解决方案3】:

      不要添加每个特殊字符,而是使用.*。 此正则表达式匹配所有内容。

      如果要从中删除某些字符,请单独使用[^a!c]不使用.*,以匹配除a!c 之外的所有字符。

      【讨论】:

        猜你喜欢
        • 2020-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-06
        相关资源
        最近更新 更多