字母数字和 space 正则表达式,但在字符串的开头和结尾没有 space
Alphanumeric and space regex but no space at start and end of string
我想写一个正则表达式,它可能包含字母或数字或单词之间的 spaces,并且长度必须在 3 到 50 之间,但字符串开头和结尾的长度不能为 spaces。这是我的正则表达式:
/^[^-\s]([a-z0-9]|[a-z0-9\s-]){3,50}[^-\s]+$/i
有效字符串:
uma
umair
umair K
无效字符串:
uma
u
um
umair
最后一个示例有一个尾随 space。
您的要求的直译如下:
!/[^a-zA-Z\d\s]/.test(str) &&
str.length >= 3 && str.length <= 50 &&
!/^\s/.test(str) &&
!/\s$/.test(str))
为什么要将所有内容都塞进一个正则表达式中?
^(?=.{3,50}$)[^\W_]+(?: [^\W_]+)*$
^
断言字符串开头的位置
(?=.{3,50}$)
确保行尾前存在 3 到 50 个字符的正向前瞻
[^\W_]+
匹配除 _
之外的任何单词字符一次或多次
(?: [^\W_]+)*
匹配 space 后跟一个或多个单词字符,任意次数
$
断言行尾的位置
var r = /^(?=.{3,50}$)[^\W_]+(?: [^\W_]+)*$/
var a = [
'uma','umair','umair K', //valid
' uma','u','um','umair ' //invalid
]
a.forEach(function(s){
console.log(r.test(s) ? `Valid: ${s}` : `Invalid: ${s}`)
})
备选方案:
^[^\W_][a-zA-Z\d ]{1,48}[^\W_]$
我想写一个正则表达式,它可能包含字母或数字或单词之间的 spaces,并且长度必须在 3 到 50 之间,但字符串开头和结尾的长度不能为 spaces。这是我的正则表达式:
/^[^-\s]([a-z0-9]|[a-z0-9\s-]){3,50}[^-\s]+$/i
有效字符串:
uma
umair
umair K
无效字符串:
uma
u
um
umair
最后一个示例有一个尾随 space。
您的要求的直译如下:
!/[^a-zA-Z\d\s]/.test(str) &&
str.length >= 3 && str.length <= 50 &&
!/^\s/.test(str) &&
!/\s$/.test(str))
为什么要将所有内容都塞进一个正则表达式中?
^(?=.{3,50}$)[^\W_]+(?: [^\W_]+)*$
^
断言字符串开头的位置(?=.{3,50}$)
确保行尾前存在 3 到 50 个字符的正向前瞻[^\W_]+
匹配除_
之外的任何单词字符一次或多次(?: [^\W_]+)*
匹配 space 后跟一个或多个单词字符,任意次数$
断言行尾的位置
var r = /^(?=.{3,50}$)[^\W_]+(?: [^\W_]+)*$/
var a = [
'uma','umair','umair K', //valid
' uma','u','um','umair ' //invalid
]
a.forEach(function(s){
console.log(r.test(s) ? `Valid: ${s}` : `Invalid: ${s}`)
})
备选方案:
^[^\W_][a-zA-Z\d ]{1,48}[^\W_]$