2017-09-22 39 views
-1

/^[^^]+$/を試しましたが、それは^を許可していませんが、許可したい<>(のような特殊文字も許可していません。 ただ1つの記号(^)を許可しない正規表現はありますか?正規表現を帽子記号(^)だけを受け入れないようにするには

+1

問題の説明は意味がありません。 [mcve]を投稿してください。 – melpomene

+1

あなたの質問の前提は間違っています。 '/^[^^] + $ /。test( '<>()')'は 'true'を返します。 – zzzzBov

+0

@melpomeneそれは意味をなさない。私にとって、彼は何を求めているのかはっきりしています。彼は '^'記号を除いてeverywithngにマッチする正規表現を望んでいます。 –

答えて

0

あなたeverything, but正規表現パターンが正常に見えます。

あなたは複数行の値を扱っていると思います。ここで少しばかげてしまうことがあります。私はregex101でサンプルを作成し、期待どおりに動作します。テスト文字列strの2つの(複数の)マッチ:dfasfs <>()(下記参照)が得られます。

しかし、ChromeとFirefoxのコンソールで同等のコードを実行すると、1つしか一致しません。

let regex = /^[^^]*$/mg; 
const str = `^ 
^dasdfs 
dasdfs^ 
dasdfsd^df 
dfasfs 
<>() 
^ 
dfasfs 
<>()`; 
let m; 

while ((m = regex.exec(str)) !== null) { 
    // This is necessary to avoid infinite loops with zero-width matches 
    if (m.index === regex.lastIndex) { 
     regex.lastIndex++; 
    } 

    // The result can be accessed through the `m`-variable. 
    m.forEach((match, groupIndex) => { 
     console.log(`Found match, group ${groupIndex}: ${match}`); 
    }); 
} 

これは、Chromeの正規表現エンジンの制限またはエラーのようです。
simulate the missing JS/.../sdotatll [\ s \ S]という修飾語を使用しましたが、役に立たなくなりました。
私はMS Edgeで同じことを試しました。そこには2つのマッチがあります。
複数の行を扱う場合、ブラウザ固有の問題が発生する可能性があります。

関連する問題