获取数字之间字符串的内容
getting contents of string between digits
有一个正则表达式问题:(
我想做的是找出两个或多个数字之间的内容。
var string = "90+*-+80-+/*70"
我试图编辑之间的符号,所以它只显示最后一个符号,而不是之前的符号。试着把上面的变量变成90+80*70。虽然这只是一个例子,我不知道如何做到这一点。数字的长度,数字"集合"的数量以及中间符号的长度可以是任何值
many thanks,
史蒂夫,
诀窍是分别匹配'90+-+'和'80-+/',并且只选择数字和最后一个常量。
查找后面跟着1个或多个非数字的数字的表达式为
'd+[^'d]+
To select the number and the last non-number, add parens:
('d+)[^'d]*([^'d])
最后添加一个/g
,对每个匹配重复此过程,并将其替换为每个匹配的2个匹配组:
js> '90+*-+80-+/*70'.replace(/('d+)[^'d]*([^'d])/g, '$1$2');
90+80*70
js>
或者您可以使用向前看断言并简单地删除所有不是最后的非数字字符:"90+*-+80-+/*70".replace(/[^0-9]+(?=[^0-9])/g,'');
您可以使用正则表达式来匹配非数字,然后使用回调函数来处理匹配并决定要替换的内容:
var test = "90+*-+80-+/*70";
var out = test.replace(/[^'d]+/g, function(str) {
return(str.substr(-1));
})
alert(out);
查看它的工作原理:http://jsfiddle.net/jfriend00/Tncya/
使用正则表达式匹配非数字序列,然后用匹配序列中的最后一个字符替换该非数字序列。
我将首先使用本教程,然后针对特定于javascript的正则表达式问题复习本教程。
应该可以了-
var string = "90+*-+80-+/*70"
var result = '';
var arr = string.split(/('d+)/)
for (i = 0; i < arr.length; i++) {
if (!isNaN(arr[i])) result = result + arr[i];
else result = result + arr[i].slice(arr[i].length - 1, arr[i].length);
}
alert(result);
工作演示- http://jsfiddle.net/ipr101/SA2pR/
-
类似于@Arnout Engelen
var string = "90+*-+80-+/*70"; string = string.replace(/('d+)[^'d]*([^'d])(?='d+)/g, '$1$2');
这是我对RegEx应该如何执行的第一个想法,它也展望未来,以确保非数字模式后面跟着另一个数字,这就是问题所要求的(在两个数字之间)
-
类似于@jfriend00
var string = "90+*-+80-+/*70"; string = string.replace( /('d+?)([^'d]+?)(?='d+)/g , function(){ return arguments[1] + arguments[2].substr(-1); });
不是只匹配非数字,而是匹配两个数字之间的非数字,这就是问题所问的
为什么会更好呢?
-
如果您的方程嵌入在段落或文本字符串中。如:
在这个测试中,我想要清理像90+*-+80-+/*70这样的内容,并且不想废弃整个段落。
Result (Expected):
这是一个测试,我想清理一些像90+80*70,不想废弃整个段落。
为什么不能更好呢?
- 有更多的模式匹配,这使得它在理论上更慢(可忽略)
-
如果你的段落嵌入了数字,它将失败。如:
萨莉从超市买了4个鸡蛋,但是只有3个完好无损地回来了。
结果(意想不到的):
这是莎莉买了43个的段落,其中3个是完整的。
- Javascript逻辑运算符和字符串/数字
- Javascript排序字符串或数字
- 制作一个regex来验证只有一个数字的字符串
- 将数字转换为字符串数字
- 将HTML(支持文件)中的令牌(字符串、数字等)传递给LogiXML
- 如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 从JS中的字符串中读取数字的库
- 字符串数字-从123456转换为123456
- JavaScript如何面对字符串数字工作
- 将字符串数字的格式设置为货币
- Javascript:如何检索*字符串*数字的小数位数
- 试图理解无法在JavaScript中改变字符串/数字的概念
- Javascript没有使用parseInt函数添加两个字符串数字
- 在jQuery中将整数格式化为字符串数字
- Regex格式字符串数字与逗号和2个小数在javascript
- 如何使用javascript排序字符串数字
- 转换'字符串数字'到一个数字
- 检查字符串/数字类型的字段是否为空
- JavaScript:将字符串/数字转换为数字或null,0返回0