2016-03-02 106 views
1

我想要拿出一個正則表達式匹配單詞開始和結尾相同的元音。我的問題是,這是一個優雅的無所不包的解決方案,還是我錯過了什麼?到目前爲止,這是我在腦筋急轉彎後出現的。我的首選環境是javascript/python,沒有特殊的庫等。謝謝你的建議。相同的單詞開頭和結尾的相同的字母

  • soln。 1)re = /(^ [aeiou])\ w + \ 1/i;
  • soln。 2)re = /(^ [aeiou])[a-zA-Z] + \ 1/i;

  • console.log(re.test(「abcda」)); // true

  • console.log(re.test(「abcdo」)); //假

回答

3

詞可以用一個單詞邊界\b匹配:

var re = /\b([aeiou])[a-z]+\1\b/i; 

regex demo

正則表達式匹配:

  • \b - 領先的單詞邊界(因爲它匹配一個單詞字符後的模式)
  • ([aeiou]) - 第1組從指定範圍
  • [a-z]+捕獲元音 - 一個或多個字母(包括大小寫由於使用/i改性劑)
  • \1 - 反向引用到與第一組捕獲的元音
  • \b - 尾字邊界
+0

Stribizew:哇,謝謝你的回答!豎起大拇指!我在辯論是否使用單詞邊界\ b,因爲我不知道他們是否會普遍工作。謝謝! – Shona

+0

呃,'\ b'應該用英文單詞。隨着俄羅斯,保加利亞等,將有一個問題:( –

+0

是這就是我所擔心的,但我想我會堅持用英文單詞現在,必須儘快想到別人:) :( – Shona

0
var re = /\b([aeiou])[a-z]+\1\b/i; 

提供虛假如果字符串爲 「AA」。字符串以相同的元音開始和結束。

相關問題