相关疑难解决方法(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万
查看次数

为什么我的javascript regex.test()给出了交替的结果

可能重复:
Javascript正则表达式返回true ..然后为false ..然后为true ..等等

var r = /\d/g;
var a = r.test("1"); // will be true
var b = r.test("1"); // will be false
console.log(a == b); // will be false
Run Code Online (Sandbox Code Playgroud)

请向我解释为什么r.test("1")每次通话交替的结果?

通过删除g修饰符,我能够解决我遇到的问题.但是我仍然想知道为什么会这样.

javascript regex

71
推荐指数
1
解决办法
1万
查看次数

全局搜索时在JavaScript中使用RegExp的错误

可能重复:
Javascript正则表达式返回true ..然后为false ..然后为true ..等等

首先,为我糟糕的英语道歉.

我正在尝试测试字符串以匹配模式,所以我写了这个:

var str = 'test';
var pattern = new RegExp('te', 'gi'); // yes, I know that simple 'i' will be good for this
Run Code Online (Sandbox Code Playgroud)

但我有这个意想不到的结果:

>>> pattern.test(str)
true
>>> pattern.test(str)
false
>>> pattern.test(str)
true
Run Code Online (Sandbox Code Playgroud)

有谁能解释一下?

javascript regex

5
推荐指数
1
解决办法
2134
查看次数

表单输入实时反馈

我正在使用用户名的输入字段构造一个表单。我想使用正则表达式将用户名限制在很小的字符范围内,根据用户输入时与正则表达式相比输入的有效性,将文本的颜色从红色更改为绿色。

到目前为止,尽管对正则表达式进行了积极的测试,它仍然没有选择出任何无效的字符。

https://regex101.com/r/XPFy6c/1/

/^[A-Z0-9 -]+$/igm
Run Code Online (Sandbox Code Playgroud)

这是代码,这里是JSFiddle 。

/^[A-Z0-9 -]+$/igm
Run Code Online (Sandbox Code Playgroud)
const form = document.querySelector('form');
const input = document.querySelector('input');

const check = /^[A-Z0-9 -]+$/ig;

form.addEventListener("input", e => {
    const checkName = check.test(input.value);
    if(!check) {
        input.classList.add('invalid-name');
        input.classList.remove('valid-name');
    } else {
        input.classList.add('valid-name');
        input.classList.remove('invalid-name');
    }
})
Run Code Online (Sandbox Code Playgroud)
.invalid-name {
  color: red;
}

.valid-name {
  color: green;
}
Run Code Online (Sandbox Code Playgroud)

更新:尽管此问题已解决,但是如果您尝试使用该代码,则会注意到正则表达式交替为真/假仍然存在问题。这个问题的解决方案在这里

javascript

2
推荐指数
1
解决办法
55
查看次数

为什么两次运行完全相同的正则表达式的结果不同?

我想将 URL 主机部分与 JavaScript 中的正则表达式匹配。假设我有一个 URL

var str = 'www.demo-site.com:1234'    
Run Code Online (Sandbox Code Playgroud)

我设计了下面的正则表达式来匹配它

var regex = /^www\.demo-site\.com(:\d+)$/gi    
Run Code Online (Sandbox Code Playgroud)

正如我所料,regex.test(str)返回true. 但是,如果我再次运行它,它会返回 false。为什么运行完全相同的函数两次的结果不同?

regex.test(str); //returns true
regex.test(str); //returns false

javascript regex

0
推荐指数
1
解决办法
422
查看次数

正则表达式返回false和true

我创建了一个函数来检查输入文本字段是否有效,然后将类名附加到与某些css代码对应的元素,或者如果它有效则不执行任何操作.

function checkInputText(inputType, elem, oldClass, classError) {
    var inputT = document.getElementById(elem);
    var oldClass = oldClass;
    var b = regex[inputType].test(inputT.value)
    if (!b) {
        inputT.className = classError + ' ' + oldClass;
        return false;
    } else {
        inputT.className = oldClass;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,由于某些未知原因,当函数调用.test()函数时,它会在第一次为事件返回true,但是当您再次尝试它时,它将返回false.

完整的代码在这里http://jsfiddle.net/assuredlonewolf/cscyB/2/

javascript regex

-2
推荐指数
1
解决办法
255
查看次数

标签 统计

javascript ×6

regex ×5