【问题标题】:Swift: Replacing substring using regular expression not workingSwift:使用正则表达式替换子字符串不起作用
【发布时间】:2016-11-17 00:56:07
【问题描述】:

我正在构建一个正则表达式来检测是否匹配以下字符串但它不起作用。这是我的代码:

var str = "asdasdd.ASD98ASD09ASD098ASD098ADS908"
let commsRegex = "\\D[a-z]{7,}.[^a-zA-Z0-9]{28,}"

if (str.rangeOfString(commsRegex,options: .RegularExpressionSearch) != nil) {

         str = "itwork.yes"   
        }

你们谁知道我做错了什么?

非常感谢您的帮助

【问题讨论】:

  • 试试这样"^[a-z]{7}\\.[A-Z0-9]{28}$"
  • @LeoDabus 这很好用。问题如果我 asdasdd 添加~sdd 不起作用,可以修改什么以检测“and~sdd.ASD98ASD09ASD098ASD098ADS908”,例如
  • 是否需要在特定位置(前 7 个字符组的中间)"[a-z]{3}~[a-z]{3}\\.[A-Z0-9]{28}$" 如果不是 "[a-z~]{7}\\.[A-Z0-9]{28}$"

标签: regex swift nsregularexpression


【解决方案1】:

您的正则表达式似乎不正确,尤其是这部分:

[ ^ a-zA-Z0-9]

注意加粗的^,这意味着只匹配a-z A-Z 和0-9 中的字符。我怀疑你想从你的正则表达式中删除那个字符。

另外,我不确定\\D,这将匹配任何非数字,但您的字符串以 7 个字符开头,这似乎与下一部分匹配,如果您期望的话,也许应该将其删除匹配正则表达式的字符串。

【讨论】:

  • 是的。此外,无法转义. 字符(如Leo 所示)也是一个问题。另外,我假设他包含^ 以尝试匹配字符串的开头,因此与其说是“删除”^,不如将​​其移动到模式的开头,在[ 之前和]
猜你喜欢
  • 1970-01-01
  • 2018-06-19
  • 2012-07-11
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
相关资源
最近更新 更多