簡體   English   中英

正則表達式無法正常工作 - 字符串必須包含數字和由空格分隔的字符串

[英]Regex not working correctly - String must contain a number and a string separated by a white space

我有一些正則表達式的麻煩。 當第三個字段填充數字和字符串由空格分隔時,我需要啟用第四個字段,但由於某種原因,我無法使其工作。

這是模式: \\d+ *?.*? .* \\d+ *?.*? .*
這是一個小提琴

 function validateStreetNumber(variable){ var reg=new RegExp('/\\d+ *?.*? .*'); console.log(reg); var compare=reg.test(variable); return compare; } $(document).ready(function(){ $('#state').prop('disabled',true); $('#address').prop('disabled',true); $('#number').prop('disabled',true); $('#city').on("input",function(){ var value=$(this).val(); if(value==''){ $('#state').prop('disabled',true); $('#address').prop('disabled',true); $('#number').prop('disabled',true); } else{ $('#state').prop('disabled',false); } }); $('#state').on("change",function(){ var value=$(this).val(); if(value=='select'){ $('#address').prop('disabled',true); $('#number').prop('disabled',true); } else{ $('#address').prop('disabled',false); } }); $('#address').on("input",function(){ var value=$(this).val(); var exp=validateStreetNumber(value); if(!exp){ $('#number').prop('disabled',true); } else if(exp){ $('#number').prop('disabled',false); } }); }); 
 input, select{ width: 200px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form action="#" id="test" name="test"> <input type="text" id="city" name="city" maxlength="100" /><br> <select id="state" name="state"> <option value="select">Select</option> <option value="aragua">Aragua</option> <option value="carabobo">Carabobo</option> <option value="miranda">Miranda</option> <option value="zulia">Zulia</option> <option value="bolivar">Bolívar</option> </select><br> <input type="text" id="address" name="address" maxlength="100"/><br> <input type="text" id="number" name="number" maxlength="8"/><br> </form> 

(對不起我的英語不好)

更改

var reg=new RegExp('/\d+ *?.*? .*');

var reg=new RegExp('\d+ *?.*? .*');

使用RegEx對象構造函數時無需使用/。

此外,如果您只想要任何以空格分隔的數字,后跟任意字符(包括空格)的字符串,您只需使用:\\ d +。*

你的正則表達式 - new RegExp('/\\d+ *?.*? .*') - 評估為/\\/d+ *?.*? .*/ /\\/d+ *?.*? .*/正則表達式:a / ,后跟一個或多個d字母,空格零次或多次,任何char零次或多次,空格和任何0+字符。 問題是你有/在開始時和一個不正確的轉義d (你在構造函數表示法中需要2個反斜杠)。

您需要使用以下正則表達式:

var reg=/^\d+\s/;

它檢查字符串是否以1+位開頭,后面是空格。

沒有必要補充.*.*? 因為你只對字符串開頭的內容感興趣。

細節

  • ^ - 字符串開始
  • \\d+ - 1位或更多位數
  • \\s - 一個空白。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM