簡體   English   中英

正則表達式不允許在開頭和結尾使用空格,並且在字符之間僅允許一個空格

[英]regex to disallow space at begining and end and allow only one space between characters

如何拒絕JavaScript中的前導空格和結尾空格,並在字符之間僅允許一個空格?

我嘗試了很多模式,這是最后一個:

^[^-\s][a-zA-Z0-9_\s-]*$

但這根本不允許空間。

我使用[a-zA-Z0-9_\\s-]是因為我只想允許英文字符。

我也不能使用修剪或替換。 我將按鍵綁定到html上的輸入字段,並檢查模式,如果regex.test(e.key)為false,則禁用該事件。

如果您想要一個匹配有效輸入的正則表達式,而不是像其他答案中那樣匹配無效輸入,則:

/^\S(?!.*  )\S$/

\\S為非空格。 中間部分為負前瞻,確保任何地方都沒有兩個空格。

您只是嘗試刪除前導和尾隨空格? 嘗試這樣的事情:

str.match(/^\s+.*\s+$/g,'');

UPD:

 $(document).ready(function() { $('input').on('change keyup', function(e) { var str = $(e.target).val(); var disallowed = str.match(/^\\s+.*|.*\\s+$/g); if (disallowed != null) { $('button').prop('disabled', true); } else { $('button').prop('disabled',false); } }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <input type="text"> <button>add</button> 

這將根據您的要求驗證給定的字符串:

 var wrong = " hello, my dear friend "; var right = "hello, my dear frind" function validate(s){ var validateRegEx = new RegExp(/^\\s+|\\s\\s+|\\s+$/g); return !s.match(validateRegEx); } console.log("Validation of '" + wrong + "': " + validate(wrong)); console.log("Validation of '" + right + "': " + validate(right)); 

/^\\s+|\\s{2,}|\\s+$/g是您想要的。 另外,您要驗證的不是e.key ,而是this.value

例:

 document.getElementById("test").onkeyup = function() { var str = this.value; if (/^\\s+|\\s{2,}|\\s+$/.test(str)) this.className = "not-valid"; else this.className = ""; } 
 .not-valid{ background-color: #FAA; } span{ color: red; display: none; } .not-valid+span{ display: inline; } 
 <input id="test" /><span> not valid</span> 

暫無
暫無

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

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