Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript从字符串中删除数字(n1,n2,…)_Javascript_Regex_String - Fatal编程技术网

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;