Js正则表达式如果存在重复的单词,如何确定无效

时间:2015-11-10 04:09:19

标签: javascript regex regex-lookarounds

我想知道如何使用js regex完成此操作。我有以下字符串。

  1. "{{abc-xyz}} #ffffff mnop"
  2. "{{abc-xyz}} #5dffff #5dffff mnop"
  3. 我需要javascript regex将字符串#1确定为有效且#2)为无效。 #2有重复的单词#5dffff。

    我试过{{[a-zA-Z0-9\s&#_-]+}}\B(\#[a-z]+)\s+[\w\s]+

3 个答案:

答案 0 :(得分:1)

试试这个Regex

(\b\S+\b)(?=.*\1)

Regex Link

答案 1 :(得分:0)

我想我明白你想要实现的目标。 试试这个:"{{[A-Za-z-]*}}\s(#[a-zA-Z0-9]+)\s*\1\s*[a-z]*"

此表达式将匹配您的字符串#2。如果匹配你可以决定你的字符串是无效的,我希望这有助于让你走上正确的道路并进一步研究RegEx。

答案 2 :(得分:0)

  

需要javascript regex将字符串#1确定为有效且#2)为   无效。 #2有重复的单词#5dffff。

尝试使用String.prototype.split()RegExp /\s+/删除空格字符,Array.prototype.every().indexOf().lastIndexOf()

var str1 = "{{abc-xyz}} #ffffff   mnop";

var str2 = "{{abc-xyz}} #5dffff   #5dffff mnop";

var norepeat = function norepeat(str) {
  return str.split(/\s+/).every(function(a) {
    return str.lastIndexOf(a) === str.indexOf(a)
  })
}

var res1 = norepeat(str1);

var res2 = norepeat(str2);

console.log(res1, res2)