regex - 在 Flex 中匹配 not\u0000

标签 regex apache-flex flex4.5

不知道为什么,但行为很奇怪。每当我在正则表达式中使用\u0000 时,它什么都不匹配。

var regexpNotWorking:RegExp = new RegExp("[^\u0000-\u0020]");
var regexpWorking:RegExp = new RegExp("[^\u0001-\u0020]");
var input:String = "I should be valid";
trace("not working: " + input.match(regexpNotWorking));
trace("working: " + input.match(regexpWorking));

输出是:

not working: null
working: I

有人知道为什么\u0001 有效,但\u0000 无效吗?

如何确保输入不包含\u0000?

最佳答案

为什么不删除否定并将正则表达式更改为:

var regexp:RegExp = /[\u0021-\uFFFF]/;

顺便说一句,无需在 Flex 中使用新的 RegExp 或引号将正则表达式括起来。

但这可能不是您正在寻找的答案。这是查找字符串是否包含 NUL 字符的一种方法。

public function stringHasNul(value:String):Boolean {
    return (value.length != value.replace("\u0000", "NUL").length);
}

var hasNul:String = "ABC\u0000DEF"
var noNuls:String = "ABCDEF";

trace(hasNul.length); // should be 7
trace(hasNul.search("\u0000")); // wrongly gives 0, should be 3
trace(noNuls.length); // should be 6
trace(noNuls.search("\u0000"));  // wrongly gives 0, should be -1

trace(stringHasNul(hasNul)); // displays true
trace(stringHasNul(noNuls)); // display false

要检查是否有任何字符在\u0000 到\u0020 范围内,您可以这样做:

var regexp:RegExp = /[^\u0021-\uFFFF]/;

if (somestring.search(regexp) == -1)
{
    // somestring is valid do something with it
}

关于regex - 在 Flex 中匹配 not\u0000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14317251/

相关文章:

apache-flex - Adobe Flex 4.5 Spark : Binding ItemRenderer Component to Parent

c# - 将没有空格的标题字符串分隔成单词

node.js - nodejs正则表达式杀死进程

php - 将自定义对象从 Flash Builder (Flex) 发送到 PHP

c++ - 在 swf 文件中使用来自 Blaze DS 的实时数据

apache-flex - 如何使用 mx PrintDataGrid 打印 flex spark datagrid?或者有没有其他方法可以在不使用 mx PrintDataGrid 的情况下实现这一目标?

actionscript-3 - 在 ideaPad Flex 4.5 应用程序中从 File.application 存储目录保存/读取文件

c# - 如何创建用于检查特定时间范围的正则表达式

regex - Vim:我如何搜索后面没有另一个词的词?

php - 使用 PHP、REST、Flex 和 Amazon S3 进行 PUT/复制