相关疑难解决方法(0)

为什么带有全局标志的RegExp会产生错误的结果?

当我使用全局标志和不区分大小写的标志时,这个正则表达式有什么问题?查询是用户生成的输入.结果应该是[true,true].

var query = 'Foo B';
var re = new RegExp(query, 'gi');
var result = [];
result.push(re.test('Foo Bar'));
result.push(re.test('Foo Bar'));
// result will be [true, false]
Run Code Online (Sandbox Code Playgroud)

var reg = /^a$/g;
for(i = 0; i++ < 10;)
   console.log(reg.test("a"));
Run Code Online (Sandbox Code Playgroud)

javascript regex

254
推荐指数
4
解决办法
4万
查看次数

regex.test()只能每隔一段时间运行一次

正则表达式test()给我提供了Firefox和Chrome的问题,但它在Opera和Safari中运行完美.

麻烦的代码:

var pattern = /(\s+(?!\$\w+)|(^(?!\$\w+)))/g;
if(pattern.test(String(id).replace(/\s+OR|AND\s+/g, ''))) {
 searchError("You suck.");
 return 1;
}
Run Code Online (Sandbox Code Playgroud)

当你传入白色空间时,它每次都会阻挡它.当你传递类似的东西时'$a b',它将在Firefox/Chrome中每隔一段时间都有效.奇怪的.

javascript regex safari firefox google-chrome

31
推荐指数
2
解决办法
5321
查看次数

为什么语句if(!condition){console.log(condition)}显示为true

我想创建一个String方法,它接受一个RegExp和一个回调,然后通过RegExp拆分String,并在split数组中插入回调的返回.简而言之,它会做这样的事情:

"a 1 b 2 c".method(/\d/, function ($1) { return $1 + 1; })
    => [a, 2, b, 3, c]
Run Code Online (Sandbox Code Playgroud)

如果String与RegExp不匹配,它应该返回一个数组,如下所示:

"a b c d e".method(/\d/, function ($1) { return $1 + 1; })
    => ["a b c d e"]
Run Code Online (Sandbox Code Playgroud)

我写了这段代码,但它没有像我想的那样工作:

String.prototype.preserveSplitReg = function(reg, func) {

    var rtn = [], 
        that = this.toString();
    if (!reg.test(that)) {
        console.log(reg, that, reg.test(that));
        return [that];
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

只有当String不匹配时才应该调用console.log reg,对吧?但有时它会记录(reg, that, true).麻烦的字符串reg是:

"See <url>http://www.w3.org/TR/html5-diff/</url> for changed elements and attributes, …
Run Code Online (Sandbox Code Playgroud)

javascript regex

10
推荐指数
1
解决办法
142
查看次数

标签 统计

javascript ×3

regex ×3

firefox ×1

google-chrome ×1

safari ×1