正则表达式只删除单词结尾处的字符 - js

时间:2017-07-26 07:34:25

标签: javascript regex

我正在尝试删除单词末尾的感叹号。

例如。 remove("!!!Hi !!hi!!! !hi") === "!!!Hi !!hi !hi"

我可以删除所有惊叹号,但是无法在单词结尾处定位。

以下是我目前的情况。

function remove(s){
  return s.replace(/([a-z]+)[!]/ig, '$1');
}

6 个答案:

答案 0 :(得分:1)

您可以使用以下RegExp删除单词结尾处的!

"!!!Hi !!hi!!! !hi"
  .replace(/!+\s/g, ' ')  // this removes it from end of words
  .replace(/!+$/g, '')    // this removes it from the end of the last word

结果:"!!!Hi !!hi !hi"

答案 1 :(得分:1)

你不能尝试这个:

\b!+

它匹配一个单词后的!

答案 2 :(得分:0)

将正则表达式更改为:

/([a-z]+)!+/ig

然后

function remove(s){
  return s.replace(/([a-z]+)!+/ig, '$1');
}

应该有效

答案 3 :(得分:0)

你可以使用这个正则表达式

console.log("!!!Hi !!hi!!! !hi!!!".replace(/([a-z]+)[!]+/ig, '$1'))

答案 4 :(得分:0)

我认为不使用正则表达式更容易,但是使用lastIndexOf和slice

类似的东西:

function removeQuestionmark(inputvalue) {
  var index = inputValue.lastIndexOf("!");

  if(inputValue.endsWith("!"))
    return inputvalue.slice(0,index-1);

  return `${inputvalue.slice(0,index-1)${inputValue.slice(index+1)}}
}

我还没有测试过代码。

答案 5 :(得分:0)

那么你应该添加一个+所以你需要多个!

function remove(s){

    return s.replace(/([a-z]+)([!]+)/ig, "$1");
}