正则表达式使用 javascript 检查字符串中是否存在除特定字母以外的任何拉丁字母

Regex to check if any latin letter except specific ones is present in string using javascript

我的任务是检查任意长度的字符串是否包含除特定字母以外的任何拉丁字母(在我的例子中,不允许匹配罗马数字 (I,V,X,L,C) 的字母)

因此,如果不存在拉丁字母 - 字符串无效,如果存在特定字符(如上所述) - 字符串无效。否则字符串有效。

有人可以帮我想出适合该条件的正则表达式吗?

示例:

123 - 无效

123 aAA - 有效

ABD - 有效

AAa ddDD zzZz - 有效

AXXXA - 无效

IV abc - 无效

应该是这样。第一部分 (?=.*[a-z]) 检查拉丁字母,[^XLVCI] 计算除这些字符之外的所有字符。

let string1 = '123'
let string2 = '123 aAA'
let string3 = 'ABD'
let string4 = 'AAa ddDD zzZz'
let string5 = 'AXXXA'
let string6 = 'IV abc'

let regex = /^(?=.*[a-zA-Z])[^XLVCI]+$/

let result = string1.match(regex)

console.log(string1.match(regex))
console.log(string2.match(regex))
console.log(string3.match(regex))
console.log(string4.match(regex))
console.log(string5.match(regex))
console.log(string6.match(regex))

这是一个标准的 RegEx 要求,构建一个包含您要匹配的所有字符的字符 class。根据你的问题,这个正则表达式应该为你做:/^[^CDILMXV]*(?:[ABE-JKN-UWY-Z])+[^CDILMXV]*$/i

Note: I am allowing for more roman numerals than you had in your post, if that.s not what you need adjust accordingly.

正则表达式必须至少有一个允许的拉丁字符(中间部分(?:[ABE-JKN-UWY-Z])+并且中间匹配前后不能有不允许的拉丁字符(开始和结束的[^CDILMXV]* )

这应该与您的所有输入相匹配。