检测文本字段中的某个模式,然后在两个单选按钮之间切换

时间:2012-08-27 09:40:53

标签: php jquery regex search

我有两个单选按钮连接到搜索字段,用于控制用户想要的搜索类型 一个用于常规关键字搜索,另一个用于车牌搜索。

预先选择了“关键字”单选按钮,但是当检测到车牌图案时,如果可能的话,我希望使用jQuery自动将其切换到“车牌”......

车牌模式将始终以两个字母(A-Z)开头,然后是五个数字(0-9),如下所示:“AZ12345”。可能会像这样的空间:“ZA 98765”。

表单方法是_GET

2 个答案:

答案 0 :(得分:3)

按照说明操作,您可以使用此模式检测车牌

 [A-Za-z]{2}\s?\d{5}

如果您想匹配牌照(例如,不是liasdjfaAG 00212lkfla),请改用^[A-Za-z]{2}\s?\d{5}$

您可以使用textchanged事件(查看this answer),然后如果模式匹配,您可以更改单选按钮的“已检查”状态。

编辑:

jsfiddle中实现,基本上代码看起来像这样

var rege = /^[A-Za-z]{2}\s?\d{5}$/;

$('#inpt').keyup(function(event) {
    if (rege.test($('#inpt').val())) {
        $('#plate').attr('checked', true);
    } else {
        $('#nonplate').attr('checked', true);
    }
});

使用这样的HTML:

<input type="text" id="inpt"/><br/>
<input type="radio" name="group1" id="plate" value="Plate"> Plate<br>
<input type="radio" name="group1" id="nonplate" value="NotPlate"> Not Plate

编辑2:

根据您的要求,我建议您阅读this问题。基本上使用setInterval(),您可以每隔1或2秒检查输入的状态,以选择正确的单选按钮。您也可以缩短此间隔(将其设置为~100 ms)

答案 1 :(得分:0)

我相信你需要的是:

function checkPlate($s) {
  $match = false;
  $s = strtoupper($s);
  $s = str_replace(" ","",$s);
  if (strlen($s) == 7) {
    preg_match(/[A-Z]{2}[0-9]{5}/, $s, $matches);
    if (count($matches) == 1) {$match = true;}
  }
  return $match;
}