【问题标题】:Remove "_100" or "_150" or "_num" alone from the end of string [duplicate]从字符串末尾单独删除“_100”或“_150”或“_num”[重复]
【发布时间】:2019-08-24 11:24:27
【问题描述】:

如何从字符串末尾删除 _100,它应该只在字符串末尾删除。 例如 标记_旧_100 应该是“标记_旧”。 标记_100 应该是“标记”。

function numInString(strs) {
  let newStr = ''
  for (let i = 0; i < strs.length; i++) {
    let noNumRegex = /\d/
    let isAlphRegex = /[a-zA-Z]$/
    if (isAlphRegex.test(strs[i])) {
      newStr += strs[i]
    }
  }
  return newStr
}

console.log(numInString('marks_100'))

【问题讨论】:

  • 到目前为止有什么努力吗?请贴出你写的代码?
  • 这确实与副本略有不同,因为这个问题也询问删除下划线。

标签: javascript regex


【解决方案1】:

请检查以下sn-p:

const s = 'marks_old_100';

// remove any number
console.log(s.replace(/_[0-9]+$/, ''));

// remove three digit number
console.log(s.replace(/_[0-9]{3}$/, ''));

// remove _100, _150, _num
console.log(s.replace(/_(100|150|num)$/, ''));

【讨论】:

    【解决方案2】:

    试试:

    string.replace(/_\d+$/g, "")
    

    它使用正则表达式,$ 匹配字符串的结尾。 .replace 然后用一个空字符串替换它,返回最后没有\d+ 的字符串。 \d 匹配任意数字,+ 表示匹配多个一个或多个。

    或者,如果您想匹配单词的结尾,请尝试:

    string.replace(/_\d+\b/g, "")
    

    它利用\b,来匹配一个单词的结尾。

    【讨论】:

    • 这很好用,但我也想避免字符串中的 _xxx 或 _xxxx。
    • @AlaguSelvan 我不确定你的意思。您的意思是,您要删除下划线后的任何内容吗?
    • @AlaguSelvan 如果是这样,试试string.replace(/_[a-zA-Z\d]{3,4}$/g, "")
    • 我想删除所有以“_number”结尾的字符。
    • @AlaguSelvan 立即查看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2023-04-07
    • 1970-01-01
    • 2014-05-14
    • 2011-03-07
    • 1970-01-01
    • 2013-05-24
    相关资源
    最近更新 更多