我需要一个需要满足以下条件的正则表达式: -
space
或hyphen
或两者都可以。但无论如何,它应该只有一个space
或一个hyphen
例如有效数据
到目前为止,我已尝试使用以下表达式,但它无法正常工作
(^[a-zA-Z0-9][^\s\-].*[^\s\-][a-zA-Z0-9]){0,8}
我需要在这里修改一下吗?
修改
这里发布的解决方案并不接受String中的一个空格和一个hypen的组合。
请提供一个表达式,以组合方式支持所有要求。
答案 0 :(得分:4)
您可以使用正则表达式/^(?=.{0,10}$)[a-z0-9]+(?:[\s-][a-z0-9]+)?$/i
DEMO:
$('#input').on('input', function() {
$('#res').text(this.value.match(/^(?=.{0,10}$)[a-z0-9]+(?:[\s-][a-z0-9]+)?$/i) ? 'Valid' : 'Not Valid')
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="input">
<div id="res"></div>
<强> Explanation here 强>
^(?=.{0,10}$)[a-z0-9]+(?:[\s-][a-z0-9]+)?$
<小时/> 更新:
只有一个空格或连字符或两者都可以
<强> /^(?=.{0,10}$)[a-z0-9]+(?:([\s-])[a-z0-9]*(?:(?!\1)[\s-])?[a-z0-9]+)?$/i
强>
$('#input').on('input', function() {
$('#res').text(this.value.match(/^(?=.{0,10}$)[a-z0-9]+(?:([\s-])[a-z0-9]*(?:(?!\1)[\s-])?[a-z0-9]+)?$/i) ? 'Valid' : 'Not Valid')
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="input">
<div id="res"></div>
^(?=.{0,10}$)[a-z0-9]+(?:([\s-])[a-z0-9]*(?:(?!\1)[\s-])?[a-z0-9]+)?$
答案 1 :(得分:1)
此表达式也验证:
只有一个
space
或hyphen
或都可以在那里
并允许字符串的开头或结尾处的连字符/空格。
<强>正则表达式强>
/^(?!(?:[^-]*-){2}|(?:[^ ]* ){2})[- a-z0-9]{0,10}$/i
匹配:
^
字符串开头(?!(?:[^-]*-){2}|(?:[^ ]* ){2})
后面没有:(negative lookahead)
(?:[^-]*-){2})
2个连字符,或(?:[^ ]* ){2}
2个空格[- a-z0-9]{0,10}
字母数字,连字符或空格,最大长度为10 $
字符串结尾/i
:不区分大小写的匹配<强>代码强>
str = "-ABC 123";
re = /^(?!(?:[^-]*-){2}|(?:[^ ]* ){2})[- a-z0-9]{0,10}$/i;
if (str.match(re)) {
document.body.innerText += "VALID";
} else {
document.body.innerText += "Invalid string";
}
&#13;
答案 2 :(得分:0)
试试这个:
^(?=.{1,10}$)([a-zA-Z0-9]+\s{0,1}[a-zA-Z0-9]*\-{0,1}[a-zA-Z0-9]+)$
详细说明请点击此处:https://regex101.com/r/hV3rJ2/1
答案 3 :(得分:0)
// Parameter: String which has to be checked with a
// regular Expression.
function checkString(toCheck) {
if (toCheck.length <= 10) {
var reg = /^[a-zA-Z0-9]+(\s|-|\s-|-\s)?[a-zA-Z0-9]+$/;
if (reg.test(toCheck)) {
return true;
}
}
return false;
}
关于codepen的完整示例: http://codepen.io/mizech/pen/EVMRJG