需要使用至少10位数的以下格式的正则表达式

时间:2016-08-17 10:12:05

标签: regex

需要使用至少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位数字和最后两种格式,它无法正常工作。

2 个答案:

答案 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} })。

我还建议将[ ()-]*替换为字符类( |-)?