我对RegEx来说还很陌生,并且遇到了一些问题,使我的RegEx可以做我想做的事情。我试图创建一个RegEx,以防止除单引号('),破折号(-)和点号(。)以外的任何特殊字符。 正则表达式需要允许空格和空字符串。
我现在拥有的是:
^[a-zA-Z0-9-.]*$
我需要添加什么才能使其生效,例如名称“ Kevin O'Leary”?
我试图通过添加\ s来允许空格,但它破坏了RegEx的其他部分。
^[a-zA-Z0-9-.]*$
预期:应允许像Kevin O'Leary这样的名字 实际:不允许像凯文·奥利里这样的名字
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以使用i
标志并使用以下表达式:
^[a-z0-9'-.\s]+$
其中\x27
是'
,而\s
是空格。
const regex = /^[a-z0-9'-.\s]+$/gmi;
const str = `Kevin O'Leary`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
如果不需要此表达式,可以在regex101.com中对其进行修改/更改。
jex.im可视化正则表达式: