首页 > 解决方案 > Finding ++ in Regular Expression

问题描述

I want to find ++ or -- or // or ** sign in in string can anyone help me?

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='';
}

标签: javascripthtml

解决方案


这通过反向引用找到双倍的字符:

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

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

[++]表示任意一个字符。通常+是量词“1 或更多”,当它应该是文字时需要用前导反斜杠转义,除非在括号中它没有任何特殊含义。

在字符类中确实需要转义的字符是例如转义字符本身(反斜杠)、表达式分隔符(斜杠)、右括号和范围运算符(破折号/减号),后者除了字符类的末尾就像我的代码示例一样。

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

您可以在括号中使用对匹配项的反向引用:

/(abc)\1

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

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

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

这完全匹配了类中的 10 个相等的字符、子模式本身和更多的 9 个反向引用。

/.../g查找由于修饰符 global (g) 而出现的所有事件。

regextester.com 上的测试用例


推荐阅读