【问题标题】:Regular expression [Any number]正则表达式 [任意数]
【发布时间】:2011-06-23 08:11:55
【问题描述】:

我需要在 javascript 的字符串中测试“[any number]”。怎么搭配?

哦,“[”和“]”也需要匹配。

所以像“[1]”或“[12345]”这样的字符串是匹配的。

不匹配:“[23432”或“1]”

例如:

$('.form .section .parent').find('input.text').each(function(index){
      $(this).attr("name", $(this).attr("name").replace("[current]", "['"+index+"']"));
});

我需要将输入字段名称:“items[0].firstname”替换为“items[1].firstname” 谢谢

【问题讨论】:

标签: javascript jquery regex


【解决方案1】:

更新:为您更新的问题

variable.match(/\[[0-9]+\]/);

试试这个:

variable.match(/[0-9]+/);    // for unsigned integers
variable.match(/[-0-9]+/);   // for signed integers
variable.match(/[-.0-9]+/);  // for signed float numbers

希望这会有所帮助!

【讨论】:

  • 我试过这个 $(this).attr("name", $(this).attr("name").replace("/\[[0-9]+\]/" , "['"+索引+"']"));但它不起作用。我做错了吗?
  • 没关系。它确实有效: var name = $(this).attr("name"); var newname = $(this).attr("name").replace(name.match(/\[[0-9]+\]/), "["+index+"]");
  • @aorcsik 救生员 :)
  • /[-.0-9]+/ 只匹配一个句点,而不是真正匹配一个数字。
【解决方案2】:
if("123".search(/^\d+$/) >= 0){
   // its a number
}

【讨论】:

    【解决方案3】:
    var mask = /^\d+$/;
    if ( myString.exec(mask) ){
       /* That's a number */
    }
    

    【讨论】:

      【解决方案4】:

      您可以使用以下函数在任何字符串中找到最大的[number]

      它以整数形式返回最大的[number] 的值。

      var biggestNumber = function(str) {
          var pattern = /\[([0-9]+)\]/g, match, biggest = 0;
      
          while ((match = pattern.exec(str)) !== null) {
              if (match.index === pattern.lastIndex) {
                  pattern.lastIndex++;
              }
              match[1] = parseInt(match[1]);
              if(biggest < match[1]) {
                  biggest = match[1];
              }
          }
          return biggest;
      }
      

      演示

      以下演示会在您每次单击按钮时计算文本区域中的最大数字。

      它允许您使用 textarea 并使用不同的文本重新测试功能。

      var biggestNumber = function(str) {
          var pattern = /\[([0-9]+)\]/g, match, biggest = 0;
      
          while ((match = pattern.exec(str)) !== null) {
              if (match.index === pattern.lastIndex) {
                  pattern.lastIndex++;
              }
              match[1] = parseInt(match[1]);
              if(biggest < match[1]) {
                  biggest = match[1];
              }
          }
          return biggest;
      }
      
      document.getElementById("myButton").addEventListener("click", function() {
          alert(biggestNumber(document.getElementById("myTextArea").value));
      });
      <div>
          <textarea rows="6" cols="50" id="myTextArea">
      this is a test [1] also this [2] is a test
      and again [18] this is a test. 
      items[14].items[29].firstname too is a test!
      items[4].firstname too is a test!
          </textarea>
      </div>
      
      <div>
         <button id="myButton">Try me</button>
      </div>

      另见this Fiddle

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-03
        • 1970-01-01
        • 1970-01-01
        • 2013-02-02
        • 2011-06-15
        • 2020-12-01
        • 2017-08-16
        相关资源
        最近更新 更多