是的,使用正则表达式验证一个字符后跟另一个字符
yup validation one character followed by other character using regular expression
我需要一些是的电子邮件验证规则来显示一些自定义消息。
- 如果我们没有得到
@
后跟 .
,则无效
- abc@gmailcom(无效)
- def.com(无效)
到目前为止我尝试过的:
yup.string().email().matches(/^(?!\@*.)/)
- 无效,如果我们得到
@
后跟 ,
- abc@gmail,com(无效)
到目前为止我尝试过的:
yup.string().email().matches(/^(?!\@*,)/)
None 个我尝试过的解决方案。
一种方法是编写不同的模式以产生不同的自定义消息。
例如,此模式匹配@
之后的逗号
^[^@\s]+@[^@\s,]*,
说明
^
字符串开头
[^@\s]+
匹配除空白字符或@ 以外的 1+ 个字符
@
字面匹配
[^@\s,]*,
匹配除空白字符或 @ 之外的可选字符,然后匹配逗号
此模式与类似电子邮件的格式相匹配。它也可以匹配逗号,但已经检查了该模式特定的模式。
^[^\s@]+@[^\s@]+\.[^\s@]+$
const getMessage = s => {
if (s.startsWith("@")) {
return `${s} -->Invalid, string starts with @`;
}
if (/^[^@\s]+$/.test(s)) {
return `${s} --> Invalid, string does not contain @`;
}
if (/^[^@\s]+@[^@\s,]*,/.test(s)) {
return `${s} --> Invalid, string has , after @`;
}
if (/^[^@\s]+@[^@\s.]+$/.test(s)) {
return `${s} --> Invalid, string has no . after @`;
}
if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s)) {
return `${s} --> Valid format`;
}
return `${s} --> Invalid format`;
};
[
"@test.com",
"abc@gmailcom",
"def.com",
"abc@gmail,com",
"test@test.com",
"test@@"
].forEach(s => console.log(getMessage(s)));
您可以使用
yup.string().email().matches(/@[^.]*\./)
和
yup.string().email().matches(/^(?!.*@[^,]*,)/)
这两个正则表达式匹配
@[^.]*\.
- 一个 @
字符,然后是 .
以外的零个或多个字符,然后是一个 .
字符(即必须有一个 @
然后在找到的 @
char) 右边必须有一个 .
^(?!.*@[^,]*,)
- 字符串的开头 (^
),然后是匹配失败的否定前瞻 ((?!...)
),如果紧挨着当前位置的右侧,有是除换行符之外的任何零个或多个字符(.*
),然后是 @
,然后是零个或多个 non-comma 个字符([^,]*
),然后一个逗号。因此,基本上,匹配不包含后跟逗号的 @
的字符串。
我需要一些是的电子邮件验证规则来显示一些自定义消息。
- 如果我们没有得到
@
后跟.
,则无效
- abc@gmailcom(无效)
- def.com(无效)
到目前为止我尝试过的:
yup.string().email().matches(/^(?!\@*.)/)
- 无效,如果我们得到
@
后跟,
- abc@gmail,com(无效)
到目前为止我尝试过的:
yup.string().email().matches(/^(?!\@*,)/)
None 个我尝试过的解决方案。
一种方法是编写不同的模式以产生不同的自定义消息。
例如,此模式匹配@
之后的逗号^[^@\s]+@[^@\s,]*,
说明
^
字符串开头[^@\s]+
匹配除空白字符或@ 以外的 1+ 个字符
@
字面匹配[^@\s,]*,
匹配除空白字符或 @ 之外的可选字符,然后匹配逗号
此模式与类似电子邮件的格式相匹配。它也可以匹配逗号,但已经检查了该模式特定的模式。
^[^\s@]+@[^\s@]+\.[^\s@]+$
const getMessage = s => {
if (s.startsWith("@")) {
return `${s} -->Invalid, string starts with @`;
}
if (/^[^@\s]+$/.test(s)) {
return `${s} --> Invalid, string does not contain @`;
}
if (/^[^@\s]+@[^@\s,]*,/.test(s)) {
return `${s} --> Invalid, string has , after @`;
}
if (/^[^@\s]+@[^@\s.]+$/.test(s)) {
return `${s} --> Invalid, string has no . after @`;
}
if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s)) {
return `${s} --> Valid format`;
}
return `${s} --> Invalid format`;
};
[
"@test.com",
"abc@gmailcom",
"def.com",
"abc@gmail,com",
"test@test.com",
"test@@"
].forEach(s => console.log(getMessage(s)));
您可以使用
yup.string().email().matches(/@[^.]*\./)
和
yup.string().email().matches(/^(?!.*@[^,]*,)/)
这两个正则表达式匹配
@[^.]*\.
- 一个@
字符,然后是.
以外的零个或多个字符,然后是一个.
字符(即必须有一个@
然后在找到的@
char) 右边必须有一个 ^(?!.*@[^,]*,)
- 字符串的开头 (^
),然后是匹配失败的否定前瞻 ((?!...)
),如果紧挨着当前位置的右侧,有是除换行符之外的任何零个或多个字符(.*
),然后是@
,然后是零个或多个 non-comma 个字符([^,]*
),然后一个逗号。因此,基本上,匹配不包含后跟逗号的@
的字符串。
.