Javascript Reg Exp无法正确匹配

时间:2016-05-18 19:43:28

标签: javascript

所以我正在使用PHP和Jquery开发一个应用程序,用户可以使用关键字来存储文本,即Keyword" Br"文字"背骨抛光"。对于该特定部分,用户将能够将关键字输入文本区域,按回车键,然后文本将出现在第二文本区域中。我正在使用" $"包围文本区域内的关键字,因为文本区域内可能还有其他文本。例如:一些文本$ Keyword $更多文本继续$ Keyword2 $ etc ...我已设法提出一个RegExp:

Reg Exp:

    match(/[$](.*)[a-zA-Z0-9](.*)[$]/g)

现在,当文本区域中的文本结构如下时,此工作正常:

一些文字$ Keyword $更多文字继续$ Keyword2 $

但是,如果我要将结构改为这样的结构:

$$一些文字$ Keyword $更多文字继续$ Keyword2 $更多文字继续$ Keyword3,Keyword4 $

它会拉入整行,而不仅仅是关键字。我想做的只是在中间插入文本" $"即使两个$$之间没有文本。因此,对于示例,匹配RegEx应该引入:

  1. (空白),因为$
  2. 之间没有任何内容
  3. 关键字
  4. 1关键字
  5. KEYWORD3,Keyword4
  6. 我是菜鸟,所以请保持温柔。

3 个答案:

答案 0 :(得分:1)

我不允许在周围的'$'符号和关键字标识符之间使用任意字符。将正则表达式更改为

match(/\$[a-zA-Z0-9,\s]*\$/g)

它应该识别关键字。

请参阅https://jsfiddle.net/317dgwq5/1/

答案 1 :(得分:1)

我会使用此正则表达式:backgroundSize:'cover',并使用您可以提供给/\$(\w+)\$/g的回调函数,以便在匹配关键字时执行关键字查找。

这是一个演示。只需键入并通过.replace()事件处理程序立即显示替换文本:

oninput
var keywords = {
    Keyword: 'about nothing',
    Keyword2: 'reading',
    Keyword3: 'Hello',
    Keyword4: 'Bye',
};

// I/O

var inp = document.getElementById('inp');
var out = document.getElementById('out');

inp.oninput = function() {
    out.value = inp.value.replace(/\$(\w+)\$/g, function(match, key) {
        return keywords[key] || '';
    });
}
inp.oninput();

答案 2 :(得分:0)

尝试/ \ $ [a-z0-9] + \ $ / gim



document.body.innerHTML = JSON.stringify("sadasdjak $aadas$ $$$$ $bbbb$$ccccc$".match(/\$[a-z0-9]+\$/gim))