特定URLField的正则表达式

时间:2019-01-19 18:00:32

标签: ios swift regex

我正在尝试验证表格。 验证网址字段时,我需要确保 用户提供的字符串不带 http(s)://,但可以使用www.以及诸如xyz.abc.com之类的字符串-注意两个点。

我尝试使用

UIApplication.sharedApplication().canOpenURL(url)

但这适用于我写了https://的情况。

我也尝试过here的正则表达式

    let regEx = "((https|http)://)((\\w|-)+)(([.]|[/])((\\w|-)+))+"

删除第一部分后,我似乎无法使多个点正常工作。

1 个答案:

答案 0 :(得分:1)

您可以使用负向后看

let regEx = "(?<!((https|http)://))((\\w|-)+)(([.]|[/])((\\w|-)+))+"

给定这些字符串:

let string1 = "https://www.google.com"
let string2 = "stackoverflow.com/questions/54269877/regex-for-specific-urlfield"

使用相同谓词评估它们的结果:

let predicate = NSPredicate(format:"SELF MATCHES %@", argumentArray:[regEx])

将产生预期的结果:

predicate.evaluate(with: string1)  //false
predicate.evaluate(with: string2)  //true