一道關於 g 筆試題

2021-09-01 19:01:00 字數 925 閱讀 2852

正則裡「g」表示全域性(global)的意思,比如當替換字串時,如果正則不加g,則只替換一次。

str = 'hello, jack, hello, lily';

reg = /hello/;

res = str.replace(reg, 'hi');

console.log(res); // 'hi, jack, hello, lily'

第二個hello未被替換,正則reg換成「/hello/g」後則全部替換。

「g」還有乙個作用是它會記錄上次匹配時的位置(lastindex)。這道題如下

var reg = /abc/g;

var str = 'abcd';

reg.test(str);

reg.test(str);

兩次test的結果分別是什麼? 相信不少人會迷惑。

這種情況perl裡也會發生

use 5.012;

my $str = 'abcd';

if ($str =~ /abc/g) else

if ($str =~ /abc/g) else

對於不同的正則物件,js中會從字串重新開始,因此以下兩次輸出都是true。

reg1 = /ab/g;

reg2 = /cd/g;

str = 'abcd';

console.log(reg2.test(str));

console.log(reg1.test(str));

但perl中第二次卻是false,因為它記住了上次匹配的位置。從字元d後再去匹配ab就匹配不上了。

use 5.012;

my $str = 'abcd';

if ($str =~ /cd/g) else

if ($str =~ /ab/g) else

一道關於 g 筆試題

正則裡 g 表示全域性 global 的意思,比如當替換字串時,如果正則不加g,則只替換一次。str hello,jack,hello,lily reg hello res str.replace reg,hi console.log res hi,jack,hello,lily 第二個hello未...

一道筆試題

看到一道筆試題,跟自己想的有點出入,就跑了下,看了看原因。我稍微改了下 include int main int argc,char argv 輸出結果 c 5 d 245 press any key to continue vc6.0 debug下的彙編 5 unsigned char a 0xa...

一道筆試題

上次去筆試的時候,有一道題,怎麼也沒做出來,當時也是很緊張,有些思路,但卻沒有做出來。有四個人要過乙個獨木橋,因為天比較黑,而且橋只能允許兩個人同時通過,並且他們只有乙個手電筒。四個人單獨同時橋的時間是1,2,5,8分鐘。問最短的時間是多少?當時我的答案 1和8,1回來,1 5,1回來,1 2 8 ...