【问题标题】:How can I use this trim function for my textbox如何为我的文本框使用此修剪功能
【发布时间】:2011-11-19 02:18:13
【问题描述】:

如何将此修剪功能:var trimmed = str.replace(/^\s+|\s+$/g, '') ; 应用于以下代码,以便如果文本框包含空格,它将显示消息“不正确”?另外,如果我使用此功能,我可以在文本框中使用“/”,因为文本框可能包含带有“/”的数据。

  if (moduletext.value == ""){
      errmsg.innerHTML = "Incorrect";
    }else{
            errmsg.innerHTML = "Correct"; 
    }  

【问题讨论】:

    标签: javascript regex string textbox trim


    【解决方案1】:

    最简单的方法是检查修剪后的值的长度。

    var trimmed = moduletext.value.replace(/^\s+/, '').replace(/\s+$/, '');
    if(!trimmed.length) {
      errmsg.innerHTML = 'Incorrect';
    } else {
      errmsg.innerHTML = 'Correct';
    }
    

    如果您知道您使用的是什么浏览器(通常不是 'my string'.trim();

    【讨论】:

    • 感谢两位的回答。 Scurker Answer 正是我正在寻找的,所以我将此答案称为最佳答案
    【解决方案2】:

    不要使用replace(),而是使用带有match() 的更简单的表达式。正则表达式/\s/ 将匹配文本框中的任何空格,并导致Incoorect 消息。

    if (moduletext.match(/\s/)){
      errmsg.innerHTML = "Incorrect";
    }else{
      errmsg.innerHTML = "Correct"; 
    }  
    

    您可以在文本框中包含/。正则表达式中的/ 是分隔符,而不是表达式的实际组成部分。

    【讨论】:

    • 如果它等于“”或包含空格,它不会在下面显示消息,我已将我的尝试放在你的答案下,我做错了什么
    • 如果您看不到我的编辑,那么这就是我尝试过的: if (moduletext.value == ""){ errmsg.innerHTML = "Incorrect"; }else if (moduletext.match(/\s/)){ errmsg.innerHTML = "不正确"; }else{ errmsg.innerHTML = "正确"; }
    • @Michael 想想那个正则表达式语句在说什么。 ' '.match(/\s/); // true 'asdf'.match(/\s/); // false 'as df'.match(/\s/); // true 您的表达式匹配包含空格的任何内容,这与 Malcom 试图实现的目标相反。
    • @scurker 是的,这正是我对这个正则表达式的意图,正如我所理解的那样,“如果文本框包含空格,它将显示消息“不正确””有这个意思。如果这不是 OP 的意图,那么我在这个问题上并不清楚。
    【解决方案3】:

    您似乎想要一个左右修剪的字符串,以及一种为您的用户更新状态字段的方法。您可能会感兴趣:

    <html>
        <head>
        <script>
                //option 1: just determine if the string is valid
                string_valid = function (str) {
    
                    validity_indicator = {
                        true:"Valid",
                        false:"InValid",
                    };
    
                    return validity_indicator[str.match( /\s*([^\s](:?.*[^\s])?)\s*/ ) != null];
                };
    
                // option 2: the trim and validation sort of wrapped up in one.
                parse_for_validity = function (str) {
                    if ( ( result = /\s*([^\s](:?.*[^\s])?)\s*/.exec( str ) ) == null ) { 
                        return 'Incorrect';
                    }
                    return result[ 1 ];
                };
    
                // then either
                // errmsg.innerHTML = string_valid( your_string_here )
    
            </script>
        </head>
        <body>
            <!-- and then test them out -->
            <script> 
                alert( string_valid("    ") );       // => 'Incorrect'
                alert( string_valid(" abc ") );      // => 'Correct'
                alert( parse_for_validity("    ") ); // => 'Incorrect'
                alert( '...' + parse_for_validity(" abc ") + '...' ); // => '...abc...'
            </script>
        </body>
    </html> 
    

    关于/,我相信你只有在正则表达式中使用它时才需要关心它。在您正在测试的字符串中包含/ 很好。如果你想在你的正则表达式中测试/,你应该能够像\/这样对它进行转义,如下面的表达式:/\//

    我希望这会有所帮助。我喜欢正则表达式! :)

    【讨论】:

      【解决方案4】:
      function trim(stringToTrim) {
      return stringToTrim.replace(/^\s+|\s+$/g,"");}
      function ltrim(stringToTrim) {
      return stringToTrim.replace(/^\s+/,"");}
      function rtrim(stringToTrim) {
      return stringToTrim.replace(/\s+$/,"");}
      
      calling : trim(document.getElementById('username').value);
      
      
      used for removing all kinds of spacing... 
      

      【讨论】:

        猜你喜欢
        • 2014-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多