2016-12-17 12 views
1

javascriptの正規表現を使用して完全な単語を完全一致させようとしています。Javascript特殊文字を含む単語全体を一致させるための正規表現

文字列の場合:1)「私はC++を知っています」 2)「私はJavaを知っている」

私はnew Regex('\\b' + text + '\\b', 'gi')を試してみましたが、これは例#2のような特殊文字のない単語には効果的です。

は、私はまた、このURLを見て撮影した: Regular expression for matching exact word affect the special character matching

を、実装:

​​

をし、それが一致するtext = 'C++'

(それは両方の例と一致します)しかし、誰かがタイプミスをして文字列が「私はC++も知っています」と言えば、後者の正規表現は、「C++」という単語がn text = 'C++'の完全一致です。

C++が単語の先頭でも単語の最後でもない限り、一致しないように変更できます。

+0

単語と文字列 '' C++ ''をマッチさせたいですか?それとももっと一般的な何か? – qxz

+0

'新しいRegExp( '\\ b' + '私はC \\ + \\ +' + '(?!\\ w)'、 'gi') ' – Visman

+0

より一般的な何かを知っています。もしtext = "C++"なら、 "私はC++を知っている"と一致させたい。しかし、「私はC++も知っている」ではありません。 – changus

答えて

0

使用この((?:(?:\w)+?)(?=\b|\w[-+]{2,2})(?:[-+]{2,2})?)

私はまた、例えば-記号を含めました。それを参照してくださいin life

enter image description here

+3

'(?:\ w)'は '\ w'と同じです。 '{2,2}'は '{2}'と同じです。 – melpomene

1

whole words including special charactersはすべてが、[\r\n\t\f\v ]を意味している場合、あなたは、単に行うことができます。

const REGEX = /([^\s]+)+/g; 

function selectWords(string) { 
 
    const REGEX = /([^\s]+)+/g; 
 
    
 
    return string 
 
    
 
    // remove punctuation 
 
    .replace(/[^a-z0-9\s+#]/ig, "") 
 
    
 
    // perform the match 
 
    .match(REGEX) 
 

 
    // prevent null returns 
 
    || [] 
 
    ; 
 
} 
 

 
var text = "Hello World" 
 
var [first, second, ...rest] = selectWords(text); 
 
console.log(1, {first, second, rest}); 
 

 

 
// example with punctuation 
 
var text = "I can come today, she said, but not tomorrow." 
 
var [first, second, third, ...rest] = selectWords(text); 
 
console.log(2, {first, second, third, rest}); 
 

 

 
// example with possible throw 
 
var text = ",.'\"` \r" 
 
var [first, second, third, ...rest] = selectWords(text); 
 
console.log(3, {first, second, third, rest}); 
 

 
// example with a specific word to be matched 
 
function selectSpecificWord(string, ...words) { 
 
    return selectWords(string) 
 
    .filter(word => ~words.indexOf(word)) 
 
    ; 
 
} 
 
var expected = "C++"; 
 
var test = "I know C++"; 
 
var test1 = "I know C++AndJava"; 
 

 
console.log("Test Case 1", selectSpecificWord(test, expected)); 
 
console.log("Test Case 2", selectSpecificWord(test1, expected));

+0

私は、変数 "text"を正規表現に取り込む例が必要です – changus

+0

(編集済み)下の「Run code snippet」ボタンをクリックしてチェックアウトすることができます。 – Hitmands

1

をあなたは、RAを追加することができます単語文字の後に受け入れられた文字([+#])のNGE:

str = 'I know C++too. I know Java and C#.'; 
 
console.log(str.match(/(\w[+#]+|\w+)/g));

NB:\w[+#]+は、より一般的な\w+よりも優先するために交代式で最初に配置する必要があります。

+0

私は、変数 "text"を正規表現に取り込む例が必要です – changus

関連する問題