在我的应用程序中,我根据服务器提供的响应添加了edittext。对于每个edittext服务器,还提供匹配的正则表达式模式。我能够成功匹配模式并进行验证。但是我想识别正则表达式模式的类型,以便我可以根据值edittext应该接受打开键盘。
例如, 如果edittext接受电子邮件地址,则打开带有@符号的键盘,如果edittext接受数字值,则应打开数字键盘。
是否有任何库可以从正则表达式返回类型,例如“电子邮件”,“数字”等来自正则表达式,因为可以有几种不同类型的正则表达式模式?
编辑:我知道如何设置edittext的输入类型,但我需要从正则表达式模式中找出类型。我无法在服务器上进行更改,我必须在客户端处理此问题。
答案 0 :(得分:8)
很可能没有一个。原因是 - 没有办法确定。你能想到的任何东西都是启发式的。
\d
或数字范围([1-5]
)或单个数字(7
)加上重复元字符(?
,{{1} },*
,+
),这是一个数字验证。{4, 12}
且没有 @ 符号,则为常规文字。继续本着同样的精神。
使用您知道其类型的字符串列表,并尝试将它们与正则表达式匹配。 Aka,电子邮件尝试\w
。
使用可以从regex生成示例字符串的库,并将它们与您自己的正则表达式匹配以确定类型。这是Java的一个,JavaScript的另一个。
<小时/>