需要使用至少10位数字的以下格式的正则表达式。
5125636563,
512-563-6563,
(512) 563-6563,
512 563 6563,
021 5252 2522,
44 207 183 8750
我用过
^\(\d{2,3}\) ?\d{3,4}( |-)?\d{3,4}( )?\d{0,10}|^\d{2,3}( |-)?\d{3,4}( |-)?\d{3,4}( )?\d{0,10}
但对于至少10位数字和最后两种格式,它无法正常工作。
答案 0 :(得分:1)
我想出了这个正则表达式:
<html>
<head>
</head>
<body bgcolor="Silver">
<form name="info" action="payment.php" method="post"><br />
<h3><b>Payment</b></h3><br/>
Payment Date<br/>
<input type="date" name="paymt_dt" /><br />
Payment#<br/>
<input type="text" name="paymt_no" maxlength="6"/><br />
Supplier ID<br />
<select name="sup_id">
<?php
include_once 'func.inc.php';
connect();
$sql="select sup_id,sup_name from supplier ";
$result = mysql_query($sql);
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
<option value="<?php echo $line['sup_id'];?>"> <?php echo $line['sup_name'];?> </option>
<?php
}
?>
</select><br />
Payment Mode<br />
<select name="pmt_mod">
<option value="Cash">Cash</option>
<option value="Cheque">Cheque</option>
<option value="DD">DD</option>
<option value="Payord">Pay Order</option>
</select><br />
Document#<br/>
<input type="text" name="doc_no" maxlength="15"/><br />
Document Date<br/>
<input type="date" name="doc_dt" /><br />
Amount<br />
<input type="number" name="amount" maxlength="10" /><br />
Remarks<br/>
<textarea id="txt1" name="remarks" maxlength="100" rows="4" cols="50">Type your comments here</textarea><br /><br />
<input type="submit" value="Submit!"/>
</form>
</body>
</html>
您可以在此处进行测试:https://regex101.com/r/mD0sO7/3
我希望这可以帮到你。
答案 1 :(得分:0)
您可能需要至少10位数,并且在开头处有一个(?=(?:[ ()-]*\d){10})
正向预测:
^(?=(?:[ ()-]*\d){10})(?:\(\d{2,3}\) ?\d{3,4}[ -]?\d{3,4} ?\d{0,10}|\d{2,3}[ -]?\d{3,4}[ -]?\d{3,4}[ -]?\d{0,10})
请参阅regex demo
请注意,前瞻符合10个数字(\d
),前面可以有零个或多个空格,(
,)
或-
个符号({{1} })。
我还建议将[ ()-]*
替换为字符类( |-)?
。