在正则表达式中查找++

时间:2018-12-01 11:00:34

标签: javascript html

我想找到++或-或//或**字符串登录,有人可以帮助我吗?

var str = document.getElementById('screen').innerHTML;
var res = str.substring(0, str.length);
var patt1 = ++,--,//,**;
var result = str.match(patt1);  
if (result)
{
    alert("you cant do this :l");
    document.getElementById('screen').innerHTML='';
}

4 个答案:

答案 0 :(得分:5)

这会通过向后引用找到字符的两倍:

/([+\/*-])\1/g
  

[从q。注释]:我知道这一点,但是当我键入var patt1 = / [++] / i;代码查找+和++

[++]表示任意一个字符。通常+是数量词“ 1或更多”,并且在应为原义的情况下需要用反斜杠转义,除非括号中没有特殊含义。

在字符类中确实需要转义的字符例如转义字符本身(反斜杠),表达式delimimiter(斜杠),右括号和范围运算符(破折号/减号),后者在字符类末尾(如我的代码示例所示)。

字符类[]与一个字符匹配。量词,例如[abc]{2}将匹配“ aa”,“ bb”,但也匹配“ ab”。

您可以在括号中使用反向引用:

/(abc)\1

此处\1是指第一个括号(abc)。整个表达式将匹配“ abcabc”。

再次澄清:我们可以在反向引用上使用量词:

/([+\/*-])\1{9}/g

这与类中的10个等于字符,子模式本身以及另外9个反向引用完全匹配。

/.../g查找所有由于修饰符全局(g)而引起的事件。

test-case on regextester.com

答案 1 :(得分:3)

这样定义模式:

var patt1 = /\+\+|--|\/\/|\*\*/;

现在它应该做您想要的。

有关正则表达式的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

答案 2 :(得分:2)

您可以使用:

/\+\+|--|\/\/|\*\*/

作为您的表情。

在这里,我通过在每个{\之前使用反斜杠来转义特殊字符。

我还在正则表达式上使用了.test(str),因为您需要的只是一个布尔(true / false)结果。

请参见下面的工作示例:

var str = document.getElementById('screen').innerHTML;
var res = str.substring(0, str.length);

var patt1 = /\+\+|--|\/\/|\*\*/;
var result = patt1.test(res);

if (result) {
  alert("you cant do this :l");
  document.getElementById('screen').innerHTML = '';
}
<div id="screen">
  This is some++ text
</div>

答案 3 :(得分:1)

尝试一下:-

  1. n+:-匹配任何包含至少一个n的字符串

  2. n*匹配包含零次或多次出现n的任何字符串

我们需要在特殊字符之前使用反斜杠。

 var str = document.getElementById('screen').innerHTML;
    var res = str.substring(0, str.length);
    var patt1 = /\+\+|--|\/\/|\*\*/;
    var result = str.match(patt1);  
    if (result)
        {
        alert("you cant do this :l");
        document.getElementById('screen').innerHTML='';
        }
<div id="screen">2121++</div>