android - 如何在 Android 的 EditText 中验证 URL/网站名称?

标签 android validation url android-edittext android-widget

我想从 Android 中的 EditText 中获取输入、URL 或网站名称,例如 www.google.com,然后用户点击 按钮 提交或当 EditText 失去焦点时,应验证 URL, 就像它的格式“www.anyURL.com”...

我该怎么做? android 中是否有任何内置功能可用?

最佳答案

简答

在 Patterns 类中使用 WEB_URL 模式

 Patterns.WEB_URL.matcher(potentialUrl).matches()

如果 URL 有效则返回 True如果 URL 无效则返回 false

长答案

从 Android API 级别 8 开始,有一个 WEB_URL图案。引用源代码,它“匹配 [es] RFC 3987 的大部分内容”。如果您针对较低的 API 级别,您可以简单地从源中复制模式并将其包含在您的应用程序中。我假设你知道如何使用模式和匹配器,所以我在这里不再赘述。

还有类URLUtil提供了一些有用的方法,例如:

方法的描述不是很详细,因此您最好查看源代码并找出最适合您的目的的方法。

至于什么时候触发校验检查,有多种可能:可以使用EditText回调函数

或使用 TextWatcher ,我认为这样会更好。

不要使用 URLUtil 来验证 URL,如下所示。

 URLUtil.isValidUrl(url)

因为它提供了像“http://”这样的字符串作为不正确的有效 URL

关于android - 如何在 Android 的 EditText 中验证 URL/网站名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5617749/

相关文章:

python - 在 Python 中自定义验证器的正则表达式

url - Go或Beego是否支持像id=这样的动态url路由?

javascript - 如何更改浏览器网址而不更改历史记录

android - 使用 actionbarsherlock 的状态寻呼机获取当前 fragment 位置

android - 在 ActionMode 之上显示 ActionMode

validation - Vue js vee 验证密码确认总是错误的

ruby - 如何让 strptime 引发带有垃圾尾随字符的 ArgumentError

javascript - 应该如何转义 URL 的片段部分?

android - 对齐 TextView 元素 alignParentLeft

android - 执行 ContentProvider 的仪器测试