2014-01-23 21 views
1

我有這樣的文字正則表達式是在JavaScript空但不是在PHP

CREATE TABLE IF NOT EXISTS `arrivals` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `jobid` int(11) NOT NULL, 
    `eta` int(32) NOT NULL, 
    `keyword` varchar(255) NOT NULL, 
    `url` varchar(255) NOT NULL, 
    `searchengine` varchar(3) NOT NULL DEFAULT 'de' COMMENT 'Suchmaschine', 
    `keywordid` int(11) NOT NULL, 
    `urlid` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2040 ; 

在PHP中,這正則表達式的作品

preg_match_all ("#(CREATE.*?);#s", $_POST["sql"], $matches);

在JavaScript這個表達式返回null。爲什麼?

var result = textAreaText.match(/(CREATE.*?);/gm);

+0

該值是我提供的文本。 – Musterknabe

+0

使用不同的修飾符...期望相同的結果...'s' = DOTALL,'m' = MULTILINE –

+0

也許我使用了不同的修飾符,因爲s在javascript中不起作用,而g在javascript中與preg_match_all相同PHP的? – Musterknabe

回答

3

JavaScript沒有s標誌(DOTALL),所以你可以使用:

var result = textAreaText.match(/(CREATE[\s\S]*?);/g); 

DOT否則匹配比換行,但使用的[\s\S]其他任何字符使得它的任何字符和換行符匹配以及。

此外,您並不需要m修飾符,因爲它用於在MULTILINE輸入中使用錨點^ and $

+1

謝謝。這工作!我是JS新手。 – Musterknabe

+0

不客氣,很高興它的工作。 – anubhava

相關問題