0

特定のテキスト フィールドのフォーマット ルールがあるプロジェクトに取り組んでいます。

ユーザーはこれらのルールを編集できます。現在、ルールは正規表現です。ユーザーは正規表現を非常に難解なものと見なしており、より簡単で使いやすい方法で正規表現を記述したいと考えています。

私はいくつかの簡単な翻訳ツールを念頭に置いています... ユーザーが数字の場合は # を、文字の場合は X などを入力できます. しかし、文字と数字以上のものを必要とする日が来ることはわかっています。

簡単な翻訳ツールが存在するかどうか、またはこれを行うためのより良い方法があるかどうか疑問に思いますか?

読んでいただきありがとうございます。すべての提案やアイデアを歓迎します。

4

2 に答える 2

1
  1. 文字列を 1 文字に分割して適用する

    • それぞれX[a-zA-Z]

    • それぞれ#\d

    • それぞれ^\^

    • 他のすべては[*]*置き換えます。 は置換する文字です

  2. すべてのパターンを結合して 1 つの最終的な正規表現パターンにする

  3. 文字列全体に正規表現パターンを適用する場合^は、先頭と$末尾に追加します。

于 2012-11-06T15:29:54.710 に答える
1

あなたが提案しているようなツールを作成するのはかなり簡単です。プレースホルダーを対応する正規表現値に展開するだけです。

var input= "XX##*"
var regex = input.replace('#', '[0-9]')
regex = regex.replace('X', '[a-zA-Z]')
regex = regex.replace('*', '.*')
# etc

もちろん、ユーザーに提供するプレースホルダーやその他のオプションを定義する必要があります。/また、創造性を発揮して、入力を(または他の識別子で)囲むことにより、パワー ユーザーが正規表現を直接入力できるようにすることもできます。

var input= '/\d\d\w\w.*/'
var regex = undefined;
if (input.matches('^/(.*)/$')) {
    regex = $1  (group 1 from regex)
} else {
  regex = input.replace('#', '[0-9]')
  regex = regex.replace('X', '[a-zA-Z]')
  regex = regex.replace('*', '.*')
}

もちろん、これは完全に解決策を示すために作られた言語です...コンパイルする方法が見つかったら、私は非常に興味があります。:)

于 2012-11-06T15:23:46.420 に答える