正则表达式仅匹配除了短划线之外没有字符的情况

时间:2014-12-30 19:26:38

标签: javascript jquery regex

我正在尝试匹配并替换具有-(短划线)的行,其中仅包含空格或换行符,如" _ -_ _ _ _"或" - _ _ _"或" _ _ _ _ - _",但不是" _ _ _ _ - _ asdf"或" - _ _ _ whatever"。如果字母之前出现,它将匹配,如在" _ asdf _ _ - _ _ _"

我在textarea中运行它,但我一直在替换-的所有实例。

$('textarea[name="yaml"]').val(
    $('textarea[name="yaml"]').val().replace(/-\x20(?!.)/g,
      ""));           
}

我还尝试了-\x20(?!\w \d)-\x20[^.]以及其他组合。

3 个答案:

答案 0 :(得分:1)

也许/-[\W]*$/m?如果需要至少一个空格,请将*更改为+

答案 1 :(得分:0)

"^.*- +$"

注意:这假设你真的只想要空格而不是空格" \ s"

示例代码:



<!DOCTYPE html>
<html>

<body>

  <p>Click the button to replace "blue" with "red" in the paragraph below:</p>

  <p id="demo1">testing -</p>
  <p id="demo2">testing -</p>
  <p id="demo3">testing-</p>
  <p id="demo4">-</p>
  <p id="demo5">testing -</p>
  <p id="demo6">testing - tester</p>
  <p id="demo7">testing -tester</p>

  <button onclick="myFunction()">Try it</button>

  <script>
    function myFunction() {
      for (var i = 1; i <= 7; ++i) {
        var ele = "demo" + i;

        var str = document.getElementById(ele).innerHTML;
        var res = str.replace(/^.*- +$/gi, "!replaced!");
        document.getElementById(ele).innerHTML = res;
      }
    }
  </script>
</body>

</html>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果我正确地阅读这个问题,可以这样做。

 # /^(?=[\S\s])[\sa-z]*[\s-]*$/

 ^                      # BOS
 (?= [\S\s] )           # Ensure string not empty
 [\sa-z]*               # Optional whitespaces or letters
 [\s-]*                 # Optional whitespace or dash, but nothing else
 $                      # EOS