3

データベースの Title フィールドからテキスト文字列を取得する RegEx 式を作成する必要があります。つまり、検索される完全な文字列Mr.は、または Ms.またはDr. またはSr.などです。

残念ながら、このフィールドはフリー フィールドであり、何でも書き込むことができました。例: M.; A; CFO

式は、次を除くすべてのものと一致する必要がMr.あります。Ms.; Dr.; Sr. (注: リストは少し長くなりますが、簡単にするために短くしてあります。)

私がこれまでに試したこと:

これは私が別のフィールドでうまく使用しているものです:

^(?!(VIP)$).* (これは、「VIP」を除くすべての文字列に一致します)

この式を次のように書き直しました。

^(?!(Mr.|Ms.|Dr.|Sr.)$).*

残念ながら、これはうまくいきませんでした。これは「。」のせいだと思います。(ドット) は RegEx の予約記号であり、特別な処理が必要です。

私も試しました:

^(?!(Mr\.|Ms\.|Dr\.|Sr\.)$).*

しかし、運もありません。

フォーラムを調べて、他の解決策をいくつかテストしましたが、自分に合った解決策が見つかりませんでした。

完全な (短い) 文字列を検索し、 「Mr.」以外のすべてに一致する数式を作成する方法を知りたいです。など。どんな助けでも大歓迎です!

注: 私の質問は変わっているように見えるかもしれません。ただし、私のアプリケーションの残りの部分は、これらのオープンエンドを処理しています。これで私を信頼してください。

4

5 に答える 5

3

文字列がこれらのプレフィックスのいずれかで始まらないようにする場合は、次のようにします。

^(?!([MDS]r|Ms)\.).*$

上記は、文字列の先頭 ( ^)の後に、リストされたプレフィックスのいずれかが続かないことを単純に確認します。( も必要ありません.*$が、これは、完全な一致を必要とするエンジンを使用している場合のためです。)

文字列にこれらのプレフィックスをどこにも持たないようにしたい場合は、次のようにします。

^(.(?!([MDS]r|Ms)\.))*$

上記により、すべての文字 ( .)の後にリストされたプレフィックスのいずれかが最後まで続くことはありません(したがって、この場合$ は が必要です)。


プレフィックスのリストが長くなる可能性があることを読みました。追加できるように拡張させてください。

^(.(?!(Mr|Ms|Dr|Sr)\.))*$

あなたは接頭辞のすべてを言いますか?次に、これを行うだけです:

^(?!Mr|Ms|Dr|Sr)\.$

そして、ドットを条件付きにしたい場合:

^(?!Mr|Ms|Dr|Sr)\.?$
                  ^
于 2013-10-07T05:01:14.217 に答える
2

これにより|、文字列と一致する任意の数値プレフィックス パターンを定義できます。

var pattern = /^(Mrs.|Mr.|Ms.|Dr.|Er.).?[A-z]$/;
var str = "Mrs.Panchal";
console.log(str.match(pattern));
于 2017-12-18T07:12:00.647 に答える
0

これはそれを行うかもしれません

/(?!.*?(?:^|\W)(?:(?:Dr|Mr|Mrs|Ms|Sr|Jr)\.?|Miss|Phd|\+|&)(?:\W|$))^.*$/i

私が言及したそのページから

于 2013-10-07T05:06:23.277 に答える