JavaScript Regex - 将包含某些字符且不包含其他字符的字符串匹配
JavaScript Regex - Match a string with that contains some characters and doesn't contain others
要求:
正则表达式应匹配不包含"@"符号但至少包含两个字母字符的字符串,并且长度在 2 到 50 个字符之间。
通过示例:
"Hi there!%%#"
" fd"
" 9 z 80212132 z"
失败示例:
"anything with @"
"a"
" 9 z 80212132 "
"This string does not contain at symbol and has two characters but is too long!"
我相信我很接近,但是除了 [a-zA-Z] 以外的任何字符都会失败,我不确定为什么:
^((?![@])(?=[a-zA-Z]).){2,50}$
您的正则表达式不会检查至少两个 alpha。
您可以使用以下正则表达式:
^(?=(?:[^A-Za-z]*[A-Za-z]){2})[^@]{2,50}$
查看正则表达式演示
解释:
-
^
- 字符串的开头 -
(?=(?:[^A-Za-z]*[A-Za-z]){2})
- 必须至少出现两次零个或多个非字母字符,后跟一个字母 -
[^@]{2,50}
- 除@
以外的 2 到 50 个字符 -
$
- 字符串的结尾。
var re = /^(?=(?:[^A-Za-z]*[A-Za-z]){2})[^@]{2,50}$/;
var strs = ['Hi there!%%#', ' fd' , ' 9 z 80212132 z', 'anything with @ a', ' 9 z 80212132 ', 'This string does not contain at symbol and has two characters but is too long!'];
// demo
for (var s of strs) {
document.body.innerHTML += "<i>" + s.replace(/ /g, ' ') + "</i> test result: <b>" + re.test(s) + "</b><br/>";
}
它确保:
- 没有字符是@
- 至少 2 个字母字符
- 总计在 2 到 50 之间
^(?!.*@)(?=(?:.*[a-zA-Z]){2}).{2,50}$
演示
相关文章:
- 包含特殊字符 (!,@,#,&) 不包括其他特殊字符
- JavaScript不显示剩余字符,但适用于其他页面
- JSON编码一个包含#和其他特殊字符的字符串
- Regex-仅当字符串包含任何其他字符时才允许使用某些字符
- Javascript:用其他字符替换反斜杠和双引号
- 正则表达式不允许所有特殊字符,但允许其他语言,如希伯来语 JavaScript
- Reg ex 表示特定字符之后和其他字符之间的任何内容
- 错误:“JSON.parse:JSON 数据第 1 行第 1 列的意外字符”,当包含其他 php 文件时
- JavaScript Regex - 将包含某些字符且不包含其他字符的字符串匹配
- 检测由 shift 键和其他键组合产生的特殊字符
- Reg Ex 不会验证我是否将 # 与其他字符或数字一起使用
- Regex匹配前面或后面没有其他字符的精确单词
- 使用其他javascript删除字符串中某个字符的所有实例
- 其他形式的字符
- 使用jquery变量替换句点、冒号或任何其他字符的通用regexp
- 使用油脂/夯实键(或其他扩展)来省略web元素中的某些字符
- 使用JavaScript删除HTML字母或其他字符
- JSON:处理textArea中的换行符(和其他无效的JSON字符)
- RegEx查找一个字符的所有出现,而不是在两个其他字符之间
- 为什么特殊字符会自动转换为字符串值中的其他字符