问一个Nodejs中javascript 正则表达式相关的问题

问一个Nodejs中javascript 正则表达式相关的问题

如何匹配一个非关键词列表 比如我现在有一个关键字列表: if|else
另有一个字符串a

我如何用正则表达式判断a既不是’if’, 也不是’else’的时候,能够获得a的值

试了下 /(?!if|else)/, 无法得到a的值

4 回复

如何匹配一个非关键词列表

假设你有一个关键字列表 ifelse,你想检查一个字符串 a 是否既不是 if 也不是 else。你可以使用 JavaScript 的正则表达式来实现这一点。

示例代码:

function isNotKeywords(str) {
    // 定义关键字列表
    const keywords = ['if', 'else'];
    
    // 创建一个正则表达式来匹配这些关键字
    const keywordRegex = new RegExp(`\\b(?:${keywords.join('|')})\\b`, 'g');
    
    // 检查字符串是否匹配关键字列表
    return !keywordRegex.test(str);
}

// 测试示例
const a1 = "hello";
const a2 = "if";
const a3 = "else";
const a4 = "world";

console.log(isNotKeywords(a1)); // true
console.log(isNotKeywords(a2)); // false
console.log(isNotKeywords(a3)); // false
console.log(isNotKeywords(a4)); // true

解释:

  1. 定义关键字列表:首先,我们定义了一个关键字数组 keywords,其中包含需要排除的关键字。
  2. 创建正则表达式:我们使用 new RegExp 来动态生成一个正则表达式。\\b 是单词边界,确保我们匹配的是完整的单词而不是部分匹配。(?:...) 是非捕获组,用于分组但不捕获结果。
  3. 测试字符串:我们使用 test 方法来检查输入字符串 str 是否匹配关键字列表。如果匹配,则返回 false;如果不匹配,则返回 true
  4. 示例测试:我们通过几个示例来验证函数的正确性。

这样,你就可以通过调用 isNotKeywords 函数来检查一个字符串是否不在指定的关键字列表中。


这种情况为撒要用正则。把关键字放到{}里面,然后判断key是否存在不就好了吗。 比如 var keyMap = {if : true, else : true},a = “xxxxx”; var ressult = keyMap[a]?"" : a;

> s = 'laksjdf'
'laksjdf'
> s.match(/(?!if|else)/)
[ '', index: 0, input: 'laksjdf' ]
> s.match(/(?!if|else)/).input
'laksjdf'

取出里面 input 属性不就好了吗?

要在 Node.js 中使用正则表达式来匹配一个非关键词列表(例如 ifelse),你可以使用负向前瞻断言 (?!...)。但是,仅使用该正则表达式是不够的,因为你需要确保整个字符串与该条件匹配。

以下是如何实现这一目标的步骤:

  1. 使用负向前瞻断言来确保当前字符不是 ifelse 的开头。
  2. 确保正则表达式能够匹配整个字符串。

你可以使用 test 方法来检查整个字符串是否满足条件。具体示例如下:

const keywords = ['if', 'else'];
const regex = new RegExp(`^(?:(?!${keywords.join('|')}).)*$`);

const a = "hello";
console.log(regex.test(a)); // true,因为 "hello" 既不是 "if" 也不是 "else"

const b = "if";
console.log(regex.test(b)); // false,因为 "if" 是关键词之一

const c = "else";
console.log(regex.test(c)); // false,因为 "else" 是关键词之一

解释:

  • ^$ 分别表示字符串的开始和结束,确保整个字符串都被检查。
  • (?!${keywords.join('|')}) 是一个负向前瞻断言,用于确保当前位置之后的字符不是关键词列表中的任何一个。
  • .* 匹配任意数量的任意字符,以确保整个字符串被检查。

这样你就可以使用正则表达式来判断一个字符串是否既不是 if 也不是 else

回到顶部