我想为密码创建一个正则表达式,用户表示他们的号码是一个密码,密码前有单词和一个冒号,单词后有散列。因此,我希望以下两项都能被接受:
code: 1234567
123567#
然而,由于"#"one_answers"code:"位于模式的两端,我目前的做法是将整个正则表达式重复两次,如下所示。
(?:(?:code|pc|#|participant)[:>]?#?(\d{7,8}(?!\d)))|((?<!\d)\d{7,8})#
我基本上是说前缀词+密码或密码+#
当我想说前缀单词或末尾的散列+密码。后者可能吗?
您可以使用字符串操作,而不是带有一个小扩展名的regex:
extension String {
func beginsWith (str: String) -> Bool {
if let range = self.rangeOfString(str) {
return range.startIndex == self.startIndex
}
return false
}
func endsWith (str: String) -> Bool {
if let range = self.rangeOfString(str, options:NSStringCompareOptions.BackwardsSearch) {
return range.endIndex == self.endIndex
}
return false
}
}
然后:
if(codeString.beginsWith("code:") || codeString.endsWith("#")
//Something