如何使用javascript或正则表达式搜索字符串“\\”?

时间:2015-08-06 13:07:40

标签: javascript regex

我的数据字符串为“\\”,表示空的或未知的日期字段。我是正则表达的新手,所以原谅我可能的无知。我理解\是转义字符,它告诉regex解释器忽略下面的字符。

因此,您可以将单个反斜杠与“\\”匹配。但是,匹配两个连续的反斜杠已经证明更加麻烦。 “\\”显然不起作用,它匹配一个反斜杠并逃脱以下字符。

我无法使用.replace(),因为它遇到了转义字符的相同问题,以及如何以语法方式搜索“\\”的方法已经躲过了我。

谷歌没用。如何将“\\”与正则表达式或简单的javascript相匹配?

5 个答案:

答案 0 :(得分:4)

一个斜线:vector<int>sb = mergesort(b,lo,high/2); vector<int>sc = mergesort(c,mid,high);

两个斜杠:\\

四个斜杠:\\\\

它匹配一个反斜杠并转义后续字符:这不是正在发生的事情。要匹配单个反斜杠,需要第一个反斜杠来告诉正则表达式“下一个字符不是一些正则表达式宏;我只想匹配纯字符,而只匹配该字符。”这与“跳过”或“允许任何”角色无关。事实上,即使对于其他角色,它仍然是用来逃避它的反斜杠。

三个星号:\\\\\\\\

或者,你可以写这样的东西。

18个反斜杠:\*\*\*

答案 1 :(得分:1)

使用\

逃离每个\\

&#13;
&#13;
alert("\\\\".indexOf("\\\\")); // 0
alert((String.fromCharCode(92) + String.fromCharCode(92)).indexOf(String.fromCharCode(92) + String.fromCharCode(92))); // 0, BTW I would do this way ;)
&#13;
&#13;
&#13;

&#13;
&#13;
alert(/\\\\/.test("\\\\")); // true
alert(/\\{2}/.test("\\\\")); // true
&#13;
&#13;
&#13;

答案 2 :(得分:1)

如果您拥有的字符串文字为"\\"并且您想要匹配该字符串中的字符,则只需匹配\,因为字符串为\

如果您拥有的字符串文字是"\\\\",则需要匹配\\,因为该字符串的值为\\

使用正则表达式 literal ,您必须像在字符串文字中一样转义反斜杠:

/\\/g //matches any single backslash character

/\\\\/g //matches any double backslash characters

将正则表达式 string 传递给RegExp构造函数,您必须转义字符串的反斜杠,然后再转换为正则表达式:

new RegExp("\\\\", 'g'); //matches any single backslash character

new RegExp("\\\\\\\\", 'g'); //matches any double backslash characters

传递给正则表达式构造函数的字符串需要具有与您在正则表达式文字中使用的相同的值。这意味着逃脱某些角色的额外级别。对于需要为字符串进行转义的某些字符,而不是正则表达式值,以及需要为正则表达式而不是字符串文字进行转义的其他字符,这可能会变得特别混乱。

例如,字符串中的引号字符("')需要进行转义,否则它将结束字符串文字:

/"/ //regular expression to match a double quote
new RegExp("\""); //regular expression string to match a double quote character
new RegExp('"'); //alternative regular expression string to match a double quote character

请注意反斜杠如何不需要双重转义。

另一个示例是.字符需要在正则表达式中进行转义,否则it'll match any character that isn't a line terminator

/\./ //regular expression to match a period character
new RegExp('\\.'); //regular expression string  to match a period character

请注意反斜杠字符 需要双重转义。

答案 3 :(得分:0)

只需使用4个反斜杠 set.Class <- function (x, ...) tryCatch( { class(x) <- c(..., "class(x)") }, error = function(ex) { class(x) <- c(..., "query", "data.frame") } ) set.Class(SMA.grouped,"fac_ed", "single")

您可以在Regex101上看到演示here

答案 4 :(得分:0)

&#13;
&#13;
$("#search").keyup(function() {
  _this = this;
  $.each($(".newgrid tbody").find("tr"), function() {
    if ($(this).text().toLowerCase().replace(/\s+/g, '').indexOf($(_this).val().replace(/\s+/g, '').toLowerCase()) == -1)
      $(this).hide();
    else
      $(this).show();
  });
  ChangeTableCount();
});

function ChangeTableCount() {
  var rowCount = $('.newgrid tr:visible').length;
  $('.newgrid caption').text("SMSF REGISTERS (TOTAL: " + (rowCount - 1) + ")");
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" id="search" class="sb_input" placeholder="Type to search..." style="width: 532px; min-width: 100px; height: 35px; display: inline" />
<div style="margin-left: 20px;">
  <table class="newgrid">
    <thead>
      <tr class="newgrid-header">
        <th scope="col">Summary</th>
        <th scope="col">Name</th>
        <th scope="col">test</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>\\</td>
        <td>Individual</td>
        <td>Current</td>
      </tr>
      <tr>
        <td>//</td>
        <td>xyz</td>
        <td>Current</td>
      </tr>
      <tr>
        <td>145</td>
        <td>abc</td>
        <td>register</td>
      </tr>
      <tr>
        <td>girls</td>
        <td>f</td>
        <td>register4</td>
      </tr>
    </tbody>
  </table>
  <br />
</div>
&#13;
&#13;
&#13;