簡體   English   中英

RegExp,單詞之間僅允許一個空格

[英]RegExp which allow only one space in between words

我正在嘗試編寫一個正則表達式以從單詞的開頭而不是單詞后面刪除空格,並且僅在單詞后面刪除一個空格。

使用過的RegExp:

var re = new RegExp(/^([a-zA-Z0-9]+\s?)*$/);

測試實例:

1) wordX[space] - Should be allowed 
2) [space] - Should not be allowed 
3) WrodX[space][space]wordX - Should be allowed 
4) WrodX[space][space][space]wordX - Should be allowed 
5) WrodX[space][space][space][space] - Should be not be allowed 
6) WrodX[space][space] - Allowed with only one space the moment another space is entered **should not be allowed** 

試試這個:

^\s*\w+(\s?$|\s{2,}\w+)+

測試用例(為清楚起見添加了“”):

"word"         - allowed (match==true)
"word "        - allowed (match==true)
"word  word"   - allowed (match==true)
"word   word"  - allowed (match==true)
" "            - not allowed (match==false)
"word  "       - not allowed (match==false)
"word    "     - not allowed (match==false)
" word"        - allowed (match==true)
"  word"       - allowed (match==true)
"  word "      - allowed (match==true)
"  word  word" - allowed (match==true)

在此處查看演示。

嘗試這個:

var re = /\S\s?$/;

這與一個非空格匹配,在字符串末尾最多匹配一個空格。

順便說一句,當您提供正則表達式文字時,無需使用new RegExp表達式。 僅在將字符串轉換為RegExp時才需要。

試試這個正則表達式

/^(\w+)(\s+)/

和您的代碼:

result = inputString.replace(/^(\w+)(\s+)?/g, "$1");

嘗試使用我給您的代碼並使用javascript實現,希望它對您有幫助。

<input type="test" class="name" />

JavaScript代碼:

$('.name').keyup(function() {
    var $th = $(this);
    $th.val($th.val().replace(/(\s{2,})|[^a-zA-Z']/g, ' '));
    $th.val($th.val().replace(/^\s*/, ''));
    });

此代碼在字符或單詞之間不允許有多個空格。 在這里檢查JsFiddle鏈接

暫無
暫無

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

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