我想写一个正则表达式,它可能包含字母或数字或单词之间的空格,并且长度必须在 3 到 50 之间,但字符串的开头和结尾不能有空格。这是我的正则表达式:
/^[^-\s]([a-z0-9]|[a-z0-9\s-]){3,50}[^-\s]+$/i
有效字符串:
uma
umair
umair K
无效字符串:
uma
u
um
umair
最后一个例子有一个尾随空格。
最佳答案
^(?=.{3,50}$)[^\W_]+(?: [^\W_]+)*$
^
断言字符串开头的位置(?=.{3,50}$)
确保行尾前有 3 到 50 个字符的正向前瞻[^\W_]+
匹配除_
以外的任何单词字符一次或多次(?: [^\W_]+)*
匹配一个空格后跟一个或多个单词字符,任意次数$
在行尾断言位置
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_]$
关于javascript - 字母数字和空格正则表达式,但字符串的开头和结尾没有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49134661/