2016-07-02 19 views
0

我正在使用JavaScript,我試圖找出如何選擇一個單詞的所有字符,但沒有第一個字符。JavaScript的正則表達式幫助選擇一個單詞,但沒有第一個字符

爲此,我正在使用regExpr。所以下面expresion:

/\B[a-zA-Z'-]+/gi

應該選擇除了每個單詞的第一個所有字符,但它並不適用於文本工作: 「我是一個小茶壺」因爲 撇號。我已經嘗試了一切,但不知道還有什麼。 我會在這裏提供任何建議或支持。

預先感謝您!

+0

你想收集匹配到一個數組或替換那些部分除第一個字符? –

+1

請檢查[this fiddle](https://jsfiddle.net/v70vtc2p/)。我建議在替換中使用'/ \ b([a-z])((?:[' - ]?[a-z] +)+)/ gi'。 –

+0

顯示如何看最終結果 – RomanPerekhrest

回答

1

enter image description here

s = "I'm a little tea pot, let's pour me out"; 
re = /(\B|')[a-z-']+/gi; 
lastLettersArray = s.match(re); 
console.log(lastLettersArray); 

OUTP ut

["'m", "ittle", "ea", "ot", "et's", "our", "e", "ut"] 
0

編輯,更新

您可以使用String.prototype.split()RegExp/^.{1}|\s[a-z'-](?!=\s){1}|\s/排除第一個字符字,匹配字的餘數; for循環,String.prototype.replace()替換.split()返回的匹配詞,然後在匹配詞上調用.toLowerCase()

var str = "I'M a liTtLe tEa pOt"; 
 
console.log("original string:", str); 
 
var res = str.split(/^.{1}|\s[a-z'-](?!\s)|\s/) 
 
      .filter(Boolean); // `["'m", "ittle", "ea", "ot"]` 
 
for (var i = 0; i < res.length; i++) { 
 
    str = str.replace(res[i], res[i].toLowerCase()) 
 
}; 
 
console.log("res array:", res, "replaced string:", str);


可以使用String.prototype.slice()與參數1str

console.log("I'm a little tea pot".slice(1))

返回字符串但不包括第一個字符

String.prototype.split()Array.prototype.slice()返回陣列不包括第一個字符在str

console.log("I'm a little tea pot".split("").slice(1))

+0

謝謝,但我需要一個regEx – galeonweb

+0

@galeonweb預期的結果是每個字符數組中的第一個字符在字符串之後?或字符串中的第一個字符後面的整個字符_「但我需要一個regEx」_爲什麼需要'RegExp'? – guest271314

+0

我需要一個regExp,因爲我不想要我的文章的解決方案,另一方面我卡在這裏。該練習涉及將每個單詞的首字母以外的每個單詞的字符串的所有字符小寫。例如:My Mum Loves Marhiuana;) – galeonweb

1

匹配正則表達式模式如下:

https://regex101.com/r/rW9sX5/2
/\b\S(\S+)/gi 

See the demo here

+0

這是接近,但它需要選擇每個字的所有字符,但不是每個的第一個 – galeonweb

+0

@galeonweb:它不工作?您是否點擊演示?我認爲它是這樣做的。注意右側窗格中的匹配列表。此外,我更新它使其更簡單。 – Mowzer

+0

該網站上的用戶界面有點混亂,但@ Mowzer的答案是正確的 – metame

1

考慮使用String.splitArray.slice功能以下方法:

var str = "I'm a little tea pot", words = []; 

str.split(" ").forEach((w) => w.length > 1 && words.push(w.slice(1))); 

console.log(words); // ["'m", "ittle", "ea", "ot"] 

或使用RegExp.exec函數與正則表達式/\b\w([\w'-]+)\b/g

var str = "I'm a little tea pot", words = "", res, re = /\b\w([\w'-]+)\b/g; 

while ((res = re.exec(str)) != null){ 
    words += " " + res[1]; 
} 

console.log(words); // "'m ittle ea ot" 
相關問題