jQuery正则表达式只允许一个匹配替换

时间:2016-02-02 12:07:04

标签: jquery regex

var test = "100pxpxpxpx"; 
test.replace(/[^0-9|px]$/g, '')

我想要的输出是:“100px”,但我得到以下内容,如何实现?

"100pxpxpxpx"

3 个答案:

答案 0 :(得分:1)

使用if ((is_callable($this->methodFilter)?$this->methodFilter($name):true))

px的多个匹配项替换为px(px)+
var test = "100pxpxpxpx"; 
test.replace(/[^0-9]+(px)+$/g, 'px');

答案 1 :(得分:1)

您可以使用单个px捕获数字 - 忽略额外内容

var test = "100pxpxpxpx"; 
test.replace(/^([0-9]+px).*$/g, '$1');

FIDDLE

^([0-9]+px).*$

Regular expression visualization

Debuggex Demo

答案 2 :(得分:0)

[^0-9|px]$正则表达式匹配字符串最后一位不是数字的1个字符,而不是|px

我建议匹配而不是替换:

var test = "100pxpxpxpx"; 
document.body.innerHTML = test.match(/^[0-9]+px/);

请参阅regex demo

正则表达式匹配:

  • ^ - 字符串开头
  • [0-9]+ - 一个或多个数字
  • px - 文字px子字符串。

如果您需要更换:

(px)[^0-9]+$

并替换为$1

请参阅another demo

var test = "100pxpxpxpx"; 
document.body.innerHTML = test.replace(/px[^0-9]+$/, 'px');