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

正则表达式exec函数不能多次运行

var ts = "00:00:06,705";

var regularExpression = /([0-9]+):([0-9]{2}):([0-9]{2}),([0-9]{3})/g;
var parsedTs1 = regularExpression.exec(ts);
var parsedTs2 = regularExpression.exec(ts);
Run Code Online (Sandbox Code Playgroud)

parsedTs1 显示正确的结果,但运行此脚本后,parsedTs2 变量为 null。

但是当我们删除最后一个“g”字符时,效果很好。

根据文档,选项标志 g 表示全局搜索,与本例无关。

如何多次使用定义的正则表达式字符串来匹配字符串呢?

javascript regex

3
推荐指数
1
解决办法
1565
查看次数

RegEx在javascript中不使用反斜杠

我正在尝试使用以下模式验证字符串.以3位数字开头,后跟连字符后跟2位数字,以4位数字结尾.例如:123-45-6789我需要将模式作为字符串变量传递给RegExp对象(我从html元素属性中获取模式值),因此我使用双斜杠转义了RegExp.令我惊讶的是,我看到了奇怪的结果.

var pattern = "^\\d{3}-\\d{2}-\\d{4}$";
var inputRegex = new RegExp(pattern, "g");
console.log(inputRegex.test('132-45-7899')); //True
console.log(inputRegex.test('132-45-7899')); //False
console.log(inputRegex.test('132-45-7899')); //True
console.log(inputRegex.test('132-45-7899')); //False
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?这种结果不一致的原因是什么?

编辑:现在我理解为什么结果不一致,但我的实际问题仍然没有解决.HTML elem如下所示

情景1:

<input data-val-regexp="^\\d{3}-\\d{2}-\\d{4}$" id="ticketNumber">

var regexPattern = input.attr("data-val-regexp");
var inputRegex = new RegExp(regexPattern);
return inputRegex.test('123-45-6789'); // False
Run Code Online (Sandbox Code Playgroud)

当我检查时,inputRegex.source是"^ \\ d {3} - \\ d {2} - \\ d {4} $"

场景2:如果我使用字符串文字分配regexPattern一切正常.

var pattern = "^\\d{3}-\\d{2}-\\d{4}$";
var inputRegex = new RegExp(pattern);
console.log(inputRegex.test('132-45-7899')); //True
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,inputRegex源值是"^\d {3} - \d {2} - \d {4} $"

为什么反斜杠在第二个场景中被转义,而在第一个场景中没有?为了使场景1有效,需要做些什么?

javascript regex jquery

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

标签 统计

javascript ×3

regex ×3

jquery ×1