javascript从字符串中删除数字(n1,n2,…)
我有一根这样的绳子javascript从字符串中删除数字(n1,n2,…),javascript,regex,string,Javascript,Regex,String,我有一根这样的绳子 var s="15,4,6,8,10,3"; 我需要使用js创建一个函数,如下所示: 注意:字符串处的数字是唯一的 removeNumber(4); 应返回: s="15,6,8,10,3"; s="4,6,8,10,3"; 这: 应返回: s="15,6,8,10,3"; s="4,6,8,10,3"; 一种可能的办法: var s = "15, 4, 6, 8, 10, 3"; function removeNumber(str, num) { var r
var s="15,4,6,8,10,3";
我需要使用js创建一个函数,如下所示:
注意:字符串处的数字是唯一的
removeNumber(4);
应返回:
s="15,6,8,10,3";
s="4,6,8,10,3";
这:
应返回:
s="15,6,8,10,3";
s="4,6,8,10,3";
一种可能的办法:
var s = "15, 4, 6, 8, 10, 3";
function removeNumber(str, num) {
var reg = new RegExp('(?:\\D+|^)' + num + '(?=\\D|$)');
return str.replace(reg, '').replace(/^\D*/, '');
// or with a single replace:
// var reg = new RegExp('^' + num + '(?:\\D+|$)|\\D+' + num + '(?=\\D|$)');
// return str.replace(reg, '');
}
这适用于分隔数字的任意数量的空格。事实上,它可以处理任何分隔数字的东西。)
说明:对于给定的数字(假设为42),将创建以下正则表达式:
/(?:\D+|^)42(?=\D|$)/
这读作确保'42'子字符串是
- 前面至少有一个非数字符号,或者位于字符串的最开头
- 后跟非数字符号,或位于字符串的最末端
424
和442
中捕获42是必要的(感谢@Newbo.O提到这一点)
请注意,目标编号之前的非数字符号由正则表达式与编号本身一起使用。这在所有情况下都很好,但是当数字是这个字符串中的第一个数字时,就有一个复杂的问题:您实际上必须将数字与以下符号一起删除,而不是前面的符号
虽然可以在单个正则表达式中解释这种情况(可选):
。。。使用简单的图案进行最终扫描要容易得多:
/^\D*/
。。。即“替换字符串开头的所有非数字符号”。一种可能的方法:
var s = "15, 4, 6, 8, 10, 3";
function removeNumber(str, num) {
var reg = new RegExp('(?:\\D+|^)' + num + '(?=\\D|$)');
return str.replace(reg, '').replace(/^\D*/, '');
// or with a single replace:
// var reg = new RegExp('^' + num + '(?:\\D+|$)|\\D+' + num + '(?=\\D|$)');
// return str.replace(reg, '');
}
这适用于分隔数字的任意数量的空格。事实上,它可以处理任何分隔数字的东西。)
说明:对于给定的数字(假设为42),将创建以下正则表达式:
/(?:\D+|^)42(?=\D|$)/
这读作确保'42'子字符串是
- 前面至少有一个非数字符号,或者位于字符串的最开头
- 后跟非数字符号,或位于字符串的最末端
424
和442
中捕获42是必要的(感谢@Newbo.O提到这一点)
请注意,目标编号之前的非数字符号由正则表达式与编号本身一起使用。这在所有情况下都很好,但是当数字是这个字符串中的第一个数字时,就有一个复杂的问题:您实际上必须将数字与以下符号一起删除,而不是前面的符号
虽然可以在单个正则表达式中解释这种情况(可选):
。。。使用简单的图案进行最终扫描要容易得多:
/^\D*/
。。。即“替换字符串开头的所有非数字符号”。一种可能的方法:
var s = "15, 4, 6, 8, 10, 3";
function removeNumber(str, num) {
var reg = new RegExp('(?:\\D+|^)' + num + '(?=\\D|$)');
return str.replace(reg, '').replace(/^\D*/, '');
// or with a single replace:
// var reg = new RegExp('^' + num + '(?:\\D+|$)|\\D+' + num + '(?=\\D|$)');
// return str.replace(reg, '');
}
这适用于分隔数字的任意数量的空格。事实上,它可以处理任何分隔数字的东西。)
说明:对于给定的数字(假设为42),将创建以下正则表达式:
/(?:\D+|^)42(?=\D|$)/
这读作确保'42'子字符串是
- 前面至少有一个非数字符号,或者位于字符串的最开头
- 后跟非数字符号,或位于字符串的最末端
424
和442
中捕获42是必要的(感谢@Newbo.O提到这一点)
请注意,目标编号之前的非数字符号由正则表达式与编号本身一起使用。这在所有情况下都很好,但是当数字是这个字符串中的第一个数字时,就有一个复杂的问题:您实际上必须将数字与以下符号一起删除,而不是前面的符号
虽然可以在单个正则表达式中解释这种情况(可选):
。。。使用简单的图案进行最终扫描要容易得多:
/^\D*/
。。。即“替换字符串开头的所有非数字符号”。一种可能的方法:
var s = "15, 4, 6, 8, 10, 3";
function removeNumber(str, num) {
var reg = new RegExp('(?:\\D+|^)' + num + '(?=\\D|$)');
return str.replace(reg, '').replace(/^\D*/, '');
// or with a single replace:
// var reg = new RegExp('^' + num + '(?:\\D+|$)|\\D+' + num + '(?=\\D|$)');
// return str.replace(reg, '');
}
这适用于分隔数字的任意数量的空格。事实上,它可以处理任何分隔数字的东西。)
说明:对于给定的数字(假设为42),将创建以下正则表达式:
/(?:\D+|^)42(?=\D|$)/
这读作确保'42'子字符串是
- 前面至少有一个非数字符号,或者位于字符串的最开头
- 后跟非数字符号,或位于字符串的最末端
424
和442
中捕获42是必要的(感谢@Newbo.O提到这一点)
请注意,目标编号之前的非数字符号由正则表达式与编号本身一起使用。这在所有情况下都很好,但是当数字是这个字符串中的第一个数字时,就有一个复杂的问题:您实际上必须将数字与以下符号一起删除,而不是前面的符号
虽然可以在单个正则表达式中解释这种情况(可选):
。。。使用简单的图案进行最终扫描要容易得多:
/^\D*/
。。。即“替换字符串开头的所有非数字符号”。尝试以下操作:
function removeNumber(n, s) {
var xs = JSON.parse("[" + s + "]");
var index = xs.indexOf(n);
if (index < 0) return s;
xs.splice(index, 1);
return String(xs);
}
函数removenNumber(n,s){
var xs=JSON.parse(“[”+s+“]);
var指数=xs.indexOf(n);
如果(指数<0)返回s;
X.拼接(索引1);
返回字符串(xs);
}
请参阅演示:尝试以下操作:
function removeNumber(n, s) {
var xs = JSON.parse("[" + s + "]");
var index = xs.indexOf(n);
if (index < 0) return s;
xs.splice(index, 1);
return String(xs);
}
函数removenNumber(n,s){
var xs=JSON.parse(“[”+s+“]);
var指数=xs.indexOf(n);
如果(指数<0)返回s;
X.拼接(索引1);
返回字符串(xs);
}
请参阅演示:尝试以下操作:
function removeNumber(n, s) {
var xs = JSON.parse("[" + s + "]");
var index = xs.indexOf(n);
if (index < 0) return s;
xs.splice(index, 1);
return String(xs);
}
函数removenNumber(n,s){
var xs=JSON.parse(“[”+s+“]);
var指数=xs.indexOf(n);
如果(指数<0)返回s;
X.拼接(索引1);
返回字符串(xs);
}
请参阅演示:尝试以下操作:
function removeNumber(n, s) {
var xs = JSON.parse("[" + s + "]");
var index = xs.indexOf(n);
if (index < 0) return s;
xs.splice(index, 1);
return String(xs);
}
函数removenNumber(n,s){
var xs=JSON.parse(“[”+s+“]);
var指数=xs.indexOf(n);
如果(指数<0)返回s;