javascript使用正则表达式得到错误的结果
javascript getting a faulty result using a regular expression
在我的网页中,我有:
var res = number.match(/[0-9'+'-'(')'s]+/g);
alert(res);
正如你所看到的,我只想得到数字,字符+,-,(,)和空格(''s)
当我尝试number = '98+66-97fffg9'
时,预期结果是:98+66-979
但我得到了98+66-97,9
逗号是个奇怪的字符!如何消除它?
这可能是因为您得到了两个满足表达式的组。
换句话说:match
机制在发现第一个不需要的字符f
时停止聚合组。然后它跳过匹配,直到下一个正确的组,在这种情况下,只包含一个数字9
。这两组用逗号隔开。
试试这个:
var number = '98+66-97fffg9';
var res = number.match(/[0-9'+'-'(')'s]+/g);
// res is an array! You have to join elements!
var joined = res.join('');
alert(joined);
之所以会出现这种情况,是因为正则表达式在数字字符串中匹配了两个结果,而不是一个。尝试打印res
,您将看到您已匹配98+66-979
和9
String.match
返回匹配项的数组。在您的情况下,您收到了两个项目['98+66-97','9']
,但alert
函数将它们输出为一个字符串'98+66-97,9'
使用String.replace
函数从输入编号中删除(过滤)所有不允许的字符,而不是match
函数
var number = '98+66-97fffg9',
res = number.replace(/[^0-9'+'-'(')'s]+/g, "");
console.log(res); // 98+66-979
stringvariable.match(/[0-9'+'-'(')'s]+/g);
将为您提供来自stringvariable
的匹配字符串的输出,不包括不匹配的字符。
在您的情况下,您的字符串是98+66-97fffg9
,因此根据正则表达式,它将消除"fffg",并为您提供["98+66-97","9"]
数组。匹配函数的默认行为。
您可以简单地执行res.join('')
以获得所需的输出。希望它能帮助你
根据来自文档的文档,返回值为
一个数组,包含整个匹配结果和任何圆括号捕获的匹配结果,如果没有匹配,则为null。
S、 您的返回值包含
["98+66-97", "9"]
所以如果你想跳过parentheses-captured matched results
只需从正则表达式中删除g标志。
所以,你的表情应该像这个
number.match(/[0-9'+'-'(')'s]+/);
给出结果["98+66-97"]
- 如何知道javascript for语句中的所有结果是否都是错误的
- JScript 错误: 无法分配给函数结果
- json-api和错误结果:无法读取属性'长度'的未定义
- 显示错误结果的Javascript
- javascript使用正则表达式得到错误的结果
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- YouTube API v3哈希标签搜索错误结果
- jQuery.Validate - 如何将错误结果放在不同的地方
- 检查JavaScript中的日期时间是否相等时出现错误结果
- 转换日期时出现错误结果
- Lodash partialRight padStart映射产生错误结果
- 在javascript中乘法的错误结果
- 用于显示错误结果的JavaScript嵌套
- 什么'这是处理promise对象中错误结果的正确方法
- 显示错误结果的typeOf
- Javascript getDate()和getMonth()返回错误结果
- LokiJS:简单的查找查询返回错误结果
- Bootstrap-datepicker getDate错误结果
- 比较select.val()和span.text()后产生错误结果
- 坐标转换javascript库Pro4js错误结果