从字符串中删除前导零和尾随零

Lio*_*rom 7 javascript regex string jquery

我有几个这样的字符串:

str1 = "00001011100000";  // 10111
str2 = "00011101000000";  // 11101
...
Run Code Online (Sandbox Code Playgroud)

我想使用带有一次操作的正则表达式从每个字符串中去除前导和结束零.

到目前为止,我使用了两种不同的功能,但我想将它们组合在一起:

str.replace(/^0+/,'').replace(/0+$/,'');
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 18

您可以使用OR子句(|)组合两个正则表达式:

var r = '00001011100000'.replace(/^0+|0+$/g, "");
//=> "10111"
Run Code Online (Sandbox Code Playgroud)

更新:上面的正则表达式解决方案替换0为空字符串.要防止出现此问题,请使用此正则表达式:

var repl = str.replace(/^0+(\d)|(\d)0+$/gm, '$1$2');
Run Code Online (Sandbox Code Playgroud)

RegEx演示

RegEx分手:

  • ^:断言开始
  • 0+:匹配一个或多个零
  • (\d):跟随在捕获组#1中捕获的数字
  • |: 要么
  • (\d):匹配捕获组#2中捕获的数字
  • 0+:后面跟着一个或多个零
  • $:断言结束

替换:

这里我们使用两个捕获组的反向引用:

$1$2
Run Code Online (Sandbox Code Playgroud)

这基本上在前导零和数字之后放置数字,然后在替换中尾随零.

  • 我知道这是一个非常古老的主题,但在尝试修剪前导/尾随零时,它仍会出现在Google搜索中.虽然这在大多数情况下都有效,但它不能正确处理值"0".它只是完全修剪它,而0在技术上是一个有效的数字. (2认同)