2012-01-12 64 views
0

我在Regexr测试这和它的作品,但它似乎并没有在AS3的工作:为什么我的正则表达式对于空字符串不起作用?

var emptyResult:* = new RegExp("^\s*$", "gi").exec(myField.text); 

var emptyResult:* = /^\s*$/gi.exec(myField.text); 

不管我是否在现场或不文本,空白或非空白,emptyResult始终为空。我尝试过,没有g和i标签,但似乎没有任何工作。

任何人都知道这可能是为什么?

回答

3
  1. 你不需要'我'标志 - 它代表'忽略大小写',它只适用于拉丁字母的字母 - 你没有使用它们。

  2. 在第一个示例中,您需要转义反斜杠,否则将其视为要转义下面的字母's'。

  3. 你也不需要'g'标志,因为你试图测试整个字符串(在你的情况下,行和字符串是相同的东西,\s将首先遇到该行的结尾,可以在$之前)。当使用你的第二个正则表达式,但是,'i'标志被移除时,它给了我期望的结果,即如果被测试字符串的整个文本由空格,制表符,回车符或其他换行,然后返回整个字符串。

例如:

trace(/^\s*$/.exec(" \t\r\n")[0].length); // 4 
+0

感谢。事实证明,这是你的观点#2和我正在做错误检查的事实('emptyResult == null'而不是'emptyResult!= null')的组合。哎呀! – jowie 2012-01-13 10:16:20

相关问题