用于检查字符串是否不应包含某些单词的正则表达式,但如果这些单词前面有 'to' 或 'for',则这些单词是可以的
Regex for checking if a string should not contain certain words but those words are ok if they have a 'to' or 'for' preceeding the words
我有一个用例,对于给定的字符串,我需要检查该字符串是否不包含像 'com'、'dot' 等等,但是如果它们是这样的,就可以使用这些词 - 'for com' 'to com' '点'。努力为此编写正则表达式/ javascript 函数。
例如:
'maincom', 'maindot'
根据正则表达式模式不应该被接受
'main for com', 'main for dot', 'main to dot', 'main to com'
根据正则表达式模式应该可以接受
根据下面 Jan 的评论回答-
^(?!.*\b(?:for com|to com|for dot|to dot)\b).+
我想到的不是单个正则表达式,而是一个简短的算法:将字符串拆分为 "words"(由一个或多个非字母字符分隔),生成一个值数组。查看数组中是否出现违规词,如果出现,请查看每种情况下的前面词,看看它是否是 "to."
虽然 可能 设计一个正则表达式,但我认为调试它并因此维护它会很困难。 (而且,让我们面对现实吧……"they'll change their mind and want something slightly different.")我敢说我建议的方法是 "plenty fast enough" 并且更易于维护。
你可以使用
^(?!.*\b(?:com|dot)\b).+
我有一个用例,对于给定的字符串,我需要检查该字符串是否不包含像 'com'、'dot' 等等,但是如果它们是这样的,就可以使用这些词 - 'for com' 'to com' '点'。努力为此编写正则表达式/ javascript 函数。
例如:
'maincom', 'maindot'
根据正则表达式模式不应该被接受
'main for com', 'main for dot', 'main to dot', 'main to com'
根据正则表达式模式应该可以接受
根据下面 Jan 的评论回答-
^(?!.*\b(?:for com|to com|for dot|to dot)\b).+
我想到的不是单个正则表达式,而是一个简短的算法:将字符串拆分为 "words"(由一个或多个非字母字符分隔),生成一个值数组。查看数组中是否出现违规词,如果出现,请查看每种情况下的前面词,看看它是否是 "to."
虽然 可能 设计一个正则表达式,但我认为调试它并因此维护它会很困难。 (而且,让我们面对现实吧……"they'll change their mind and want something slightly different.")我敢说我建议的方法是 "plenty fast enough" 并且更易于维护。
你可以使用
^(?!.*\b(?:com|dot)\b).+