- ベストアンサー
正規表現
UKYの回答
2 番目のやつは、match メソッドの中で文字列を自動的に RegExp オブジェクトに変換してくれるということです。 もちろんすべてのメソッドで文字列を RegExp に自動的に変換してくれるわけではありませんが、match や replace などのメソッドは自動的に変換してくれます。 単に "" で囲んだだけではそれはただの文字列でしかありません。正規表現検索をするには、最終的にはどこかで RegExp オブジェクトが作られるということになります。その RegExp オブジェクトの作り方がいろいろある、ということです。 \ が二つあるのは、それが文字列の中だからですね。 "" で囲んだ文字列の中には、文字列を構成する文字として " や \ を直接書くことができないので、\" や \\ と書く必要があります。(一度文字列として解釈された後に正規表現として解釈されるということ) // で囲んだ場合はそのまま正規表現として解釈されるので \ はそのまま \ と書くのですが、逆に / を \/ に書き換えないといけません。
関連するQ&A
- 正規表現
正規表現について勉強中です。 先頭2文字をたとえばYQで入力させたい場合は どうマッチさせればよいのでしょうか? if string.match(/^YQ|[0-9]/) == null { nullの場合の処理 } としていますが、うまくいきません。 正規表現についてはまったくの初心者ですので、 笑わないでくださいね。
- ベストアンサー
- JavaScript
- 言語ではなく、正規表現のみで複数の条件を記述する方法 ?
一つの条件の正規表現は書けるようになりましたが、 条件が重なった場合の対処の仕方がわかりません。 my $val = "12"; #数字のみ if($val =~ /^[0-9]+$/){ # match! } #0で無い if($val !~ /^0$/){ # match! } # 数字で0でない <---複数条件 ? # 言語でカバーするのではなく、正規表現のみ(1つの正規表現) # でANDやORやXORができるパターンの記述方法が知りたいです。 if($val =~ /^[0-9]+$/) && ($val !~ /^0$/){ # match! }
- ベストアンサー
- Perl
- 正規表現について
小数点以上3桁、小数点以下1桁までの数をチェックしたく次のようなスクリプトにしましたが、うまくいきません。 if (str.match(/[0-9]{2,3}[\.]?[0-9]?/)!=null){ // OK }else{ // NG } この正規表現では、"str='50a'"などが、私の浅はかな予想に反して、OKになってしまいます。 何が悪いかご教授よろしくお願いします。
- ベストアンサー
- JavaScript
- JavaScriptで日付の正規表現の方法
お世話になっております。たびたびすみません。。 昨日、教わった正規表現の仕方(XX-XXXXXXX-XXXXX X=1-9)はよくわかったのですが、その方法を真似て 2004/02/02 12:00 みたいな日付が正しいかどうかチェックするスクリプトを考えてみたのですが、エラーがでてうまく動きません。 str=document.FORM.TEXT.value; if(str != ""){ if(! str.match(/^[0-9]{4}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}$/)){ window.alert("ERR"); document.FORM.TEXT.focus(); return(false); } } 形式は (YYYY/MM/DD hh:mm)です。 まったくわかりません・・・すみませんが、よろしくお願いいたします。
- ベストアンサー
- JavaScript
- 正規表現について
お世話になります。 ●●● ●●● という文字列かどうか判断する正規表現を作成したいです。 条件としては、 ・「文字1 (←全角スペース)文字2」という感じで、文字1と文字2に全角スペースが挟まれている感じで、文字列の先頭にも末尾にも空白文字は入ってはいけない(真ん中に1つのみ) ・文字1と文字2には、数字・空白以外の文字が入る(主に感じ・ひらがな・カタカナが入る)(文字数は一文字以上) といったところです。 自分で作成した正規表現は、 $pattern = '/^([\d\S])+ ([\d\S])+$/'; if( !preg_match($pattern,$chkStr) ) print "マッチしていない"; } なんですが、どうもマッチしてほしい文字にマッチしていないようなのです。 お手数ですがご教授ください。
- ベストアンサー
- PHP
- 正規表現中の()について
正規表現中の()について 繰り返し正規表現を行い、マッチ部分を配列に入れる場合の疑問です。 今回、while文を使わずに書いてみようとしています。 #3個以上数字が連続していたら、配列へ入れる。…(1) my @data = ( $str =~ /\d{3,}/g ); #3個以上連続している、同じ文字を取り出して、配列へ入れる。…(2) my @data = ( $str =~ /(.)\1{2,}/g ); 1つめのほうは期待通りに動きました。 が、2つめは正規表現内の()で囲まれた範囲しか、配列に入ってくれませんでした…。 具体的には、$str='AAABBB'なら、 @data='A','B'になってしまいました。(AAA,BBBを配列に入れたい) たぶん、while文と$&を使えば書けそうだとは思いますが、 今回は、この書式で期待通りに動かす方法を知りたいです。 AAA,BBBを配列に入れるにはどのように書けばよいでしょうか? どうか、ご教授ください。 よろしくお願いします。
- ベストアンサー
- Perl
- 正規表現について
PHP5.2.4を使用しています。 任意の数の引数がある文字列をpreg_matchを使ってマッチさせたいのですが、 例えば"ENUM(ab,cd)"は ab と cd の2つの引数があるとします。 次のようなパターン文字列まではアイデアとして浮かんだのですが、 引数の最後は , がないので当然ですがマッチしません・・・ どのようにパターン文字列を記述すれば良いのでしょうか? $str = "ENUM(ab,cd)"; if (preg_match("/ENUM\(([^\,]+\,)+\)/", $str, $match)) { print "{$match[0]}<br>\n"; }
- 締切済み
- PHP
お礼
再度の回答ありがとうございました^^ 詳しい説明で大分理解できました。 特定ののメソッドだけが変換してくれるということですね。 \の説明もありがとうございました。