我正在尝试
09-546-943
在以下正则表达式模式中失败。
^^ [0-9] {2,3} [-] {0,1} [0-9] {3} [-] {0,1} [0-9] {3} $ >
通过标准是
大于10-000-000或010-000-000并且
小于150-000-000
尝试的示例“ 09-546-943”通过。这应该是失败的。
知道如何创建一个使该示例失败而不是通过的正则表达式吗?
答案 0 :(得分:4)
您可以使用
^(?:(?:0?[1-9][0-9]|1[0-4][0-9])-[0-9]{3}-[0-9]{3}|150-000-000)$
请参见regex demo。
该模式部分由this online number range regex generator生成,我将最小值设置为10
,将最大值设置为150
,然后合并与1-8
和{{1 }}(此工具在这里做得不好),在两位数中添加了9
,以匹配0?
部分和{{1}的可选前导0
和-[0-9]{3}-[0-9]{3}
}} 10-149
。
请参见regex graph:
详细信息
-000-000
-字符串的开头150
-容器非捕获组的开始,使锚适用于两种选择:
^
-可选的(?:
,然后是10到99或(?:0?[1-9][0-9]|1[0-4][0-9])
之间的数字,后跟0到4的数字,然后是任何数字(100到149)0
-连字符和三位数字重复两次(= 1
)-[0-9]{3}-[0-9]{3}
-或
(?:-[0-9]{3}){2}
-一个|
值150-000-000
-非捕获组的结尾150-000-000
-字符串的结尾。答案 1 :(得分:0)
此表达式或稍作修改的版本可能会起作用:
^[1][0-4][0-9]-[0-9]{3}-[0-9]{3}$|^[1][0]-[0-9]{3}-[0-9]{2}[1-9]$
它也会失败10-000-000
和150-000-000
。
如果您感兴趣,请在此demo中对表达式进行说明。
答案 2 :(得分:0)
此模式:
function storeCurrent(){
currentCash= document.getElementById("current").value;
// check if the entered value is number
if (isNaN(Number(currentCash))) {
alert("Numbers only");
} else {
currentTotal.innerHTML = `Current total is:${currentCash}`;
}
}
function checkOnWhat(val) {
var element = document.getElementById('whatOn');
if (val == 'Other')
element.style.display = 'block';
else
element.style.display = 'none';
}
function deductFromTotal() {
var spent = document.getElementById("money_spent").value;
// check if the entered value is number
if (isNaN(Number(spent))) {
alert("Numbers only");
} else {
//currentCash = currentCash - spent;
currentCash -= spent;
currentTotal.innerHTML = `Current total is:${currentCash}`;
}
}
/*function listSpending(){
listOfSpending= document.getElementByName("moneySpent").value;
listTotalSpent.innerHTML= listOfSpending;
}*/
/*function listSpending(){
var repeat, spending= [];
while (repeat == true){spending.push(getElementById("money_spent").innerHTML,getElementById("whatOn").innerHTML )
repeat = confirm("Did you spend money on anything else?");
listTotalSpent.innerHTML= listOfSpending;`;
}
}*/
匹配范围从 <input type="amount" size=25 Placeholder="How much is in your wallet?"
id="current">
<input type="button" value ="confirm" onClick="storeCurrent()">
<br>
<h2 id="currentTotal">Current total is:
</h2>
<input type="amount" size=25 Placeholder="How much did you spend today?"
id="money_spent" name="moneySpent" required>
<select name="moneySpent" onchange='checkOnWhat(this.value);' required>
<option> Groceries
<option>Going out
<option>Bills
<option>Other</select>
<input type="text" name="whatOn" id="whatOn" style='display:none;'
required />
<p>
<input type="button" value="confirm" onClick="deductFromTotal()" ;
"listSpending()">
<h3 name="totalSpent" id="totalSpent"> Today's Total Spending: </h3>
<div id="listTotalSpent"></div>
到((0?[1-9])|(1[0-4]))[0-9]-[0-9]{3}-[0-9]{3}
(含)。为了使正则表达式简单,您可能需要分别处理极端情况((0)10-000-000
和149-999-999
-取决于是否需要包含或排除它们。
测试here。
此正则表达式:
(0)10-000-000
接受150-000-000
(空格)或不接受((0?[1-9])|(1[0-4]))[0-9][- ]?[0-9]{3}[- ]?[0-9]{3}
。
测试here。