为什么我的正则表达式不能用于空字符串?

时间:2012-01-12 17:31:55

标签: regex flash actionscript-3

我在Regexr上测试了它并且它可以工作,但它似乎在AS3中不起作用:

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

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

无论我是否在字段中有文本,空格或非空格,emptyResult始终为null。我尝试过使用和不使用g和i标签,但似乎没有任何效果。

任何人都知道为什么会这样?

1 个答案:

答案 0 :(得分:3)

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

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

  3. 您也不需要'g'标志,因为您正在尝试测试整个字符串(在您的情况下,行和字符串是相同的,\s将首先遇到该行的结尾,$之前可以。)

  4. 然而,在使用第二个正则表达式时,删除了'i'标志,它会给出我期望的结果,即测试字符串的整个文本是否包含空格,制表,回车或换行,然后返回整个字符串。

  5. 例如:

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