2012-01-12 14 views
1

ハイフンを含まない正規表現を検索しようとしています。たとえば、debtという語句を検索しますが、debt-to-incomeは検索しません。正規表現にハイフンが含まれていない場合は、正規表現を選択する

私は\bdebt-to-income\bを取得しましたが、それはただdebt-to-incomeを選択しますが、私はその逆が必要です。助けて!

+0

「\ bdebt \ b」についてはどうですか? – georg

+0

'\ bdebt \ b'は依然として負債収入を得ます – pstinnett

+0

@ thg435ハイフンは単語境界です – Amarghosh

答えて

1

は、次のパターンを使用します。 "借金" が続いていませんが、 "-to-収入"

\bdebt(?!-to-income) 

をこのパターンは簡単に多くを制限するために拡張することができます例えば、「debt-of-the-usa」:

\bdebt(?!-to-income|-of-the-usa) 

ヨーあなたはおそらく一致する必要がありますdebt-freedebt-freeが何も意味しない)ので、ちょうどハイフンを探してはいけません。

1

だけではJavaScriptを使用します。

var hyphens = 'debt-to-income'; 

if (hyphens.indexOf('-') == -1) { 
    // No hyphens 
} 
+0

プログラムで言葉をリンクで置き換えています。負債は1つの場所に移動する必要があり、収入は別のものに移る必要があります。私が「借金」を置き換えるとき、私はそれが負債から収入に影響を及ぼさないようにする必要があります。それ以外の場合は、debtの収益に沿ったものになり、負債から収入まではわかりません。私はハイフンで単語を見つけることができます、私は特にハイフンを持っていない用語を見つける必要があります。 – pstinnett

+0

右。そのコードは文字列に '-'がない場合にのみ実行されます。 – Blender

+0

さて、ここで 'if'の場合は、すべてのハイフン以外の変数を扱います。 –

1
debt\b([^\-]|$) 

debtハイフンまたはストリングの終わりの後に続く文字。

あなたが同様に左側をチェックしたい場合は

:基本的に (^|[^\-])\bdebt\b([^\-]|$)

1

は、あなたは「用語ではない、文字ではなくハイフン」を探しています:

term = "debt" 
re = new RegExp("\\b" + term + "(?=[^\\w-])", "g") 
text = "this is debt and debt, debtword and debt-to-income" 
console.log(text.replace(re, "<$&>")) 

結果:

this is <debt> and <debt>, debtword and debt-to-income 
0

目的はどこ言葉、文字のストリーム内の特定の言葉にを見つけることであるならばは、ハイフンを含む連続した文字数として定義されています。その場合、\ bは、Javascriptではハイフンを単語境界とみなして放棄する必要があります。例としては、上記の前提に基づいて誤ってマッチングされる債務不履行または債務返済が挙げられる。 単語の代わりに[\w\-]という文字を定義すると、次の正規表現は正しいの単語と一致しますが、残念なことにキャプチャグループを置き換える必要があります。最初の部分はJavascriptのルックバックサポートがないためです。

(?:^|[^\w\-])(debt)(?=[^\w\-]) 
関連する問題