JavaScript正则表达式:非数字字符

JavaScript正则表达式:非数字字符,javascript,regex,Javascript,Regex,我如何说删除一个前面有非数字,后面有破折号的数字,但保留前面的非数字字符 RegExp: /[^\D]4\-/ String: http://localhost/images/4-6-.png Remove: 4- 应删除4-,并保留前面的/或- 这将起作用:/4\-/ 但它也会删除14-或44- 动态代码: 静态代码: var类别\u id=4; var src='1〕http://localhost/images/4-6-.png'; var regexp=new regexp('[^\

我如何说删除一个前面有非数字,后面有破折号的数字,但保留前面的非数字字符

RegExp: /[^\D]4\-/
String: http://localhost/images/4-6-.png
Remove: 4-
应删除
4-
,并保留前面的
/
-

这将起作用:
/4\-/

但它也会删除
14-
44-

动态代码:

静态代码:
var类别\u id=4;
var src='1〕http://localhost/images/4-6-.png';
var regexp=new regexp('[^\\D]'+类别id+'\\\-')
$('p').append('regexp:'+regexp+'
'); $('p').append(src+'
'); src=src.replace(regexp',); $('p')。追加(src);
您想要的是
[\D]
[^\D]
,而不是
[^\D]
。Regex是区分大小写的,
\d
匹配一个数字,
\d
匹配除数字以外的任何东西。

这是测试Regex的一个很好的地方,你是说
/\D4-/
<代码>[^\D]相当于
\D
var category_id = 4;
var src         = 'http://localhost/images/4-6-.png';
var regexp      = new RegExp('[^\\D]'+ category_id +'\\-')

$('p').append('regexp: '+ regexp +'<br>');
$('p').append(src +'<br>');

src = src.replace(regexp, '');

$('p').append(src);