在正则表达式中匹配Nothing或pattern

时间:2015-11-19 12:16:57

标签: ios regex xcode nsregularexpression

我正在尝试验证iOS程序中的字段: 我需要匹配一个电话号码,但该字段是可选的 我想使用正则表达式来匹配数字,以验证是否没有电话号码:

[0-9\-\+\*]{4,14}

然后我想如何匹配有效号码或根本没有号码的地方?

(:?[0-9\-\+\*]{4,14})?

意思是,在0到9,+, - ,*之内的4到14个字符之间匹配,或者没有。 This website显示该模式的infinte匹配。

想法?

2 个答案:

答案 0 :(得分:0)

^$|^[0-9\-\+\*]{4,14}$

至于这带来的问题:
正则表达式是一种很好的验证方法。它是跨平台的。 不需要另一层代码来实现。简单干净。

答案 1 :(得分:-1)

你应该只编码。我不知道你的语言,但基本上是:

public static void main(String[] args) {

    String s= "abc";
    String s1="cba";



     char[] aArr = s.toLowerCase().toCharArray(); 
     char[] bArr = s1.toLowerCase().toCharArray();

  // An array to hold the number of occurrences of each character
  int[] counts = new int[26]; 

  for (int i = 0; i < aArr.length; i++){
   counts[aArr[i]-97]++;  // Increment the count of the character at respective position
   counts[bArr[i]-97]--;  // Decrement the count of the character at respective position
  }

  // If the strings are anagrams, then counts array will be full of zeros not otherwise
  for (int i = 0; i<26; i++){
   if (counts[i] != 0)
    return false;
  } 

应该这样做。