2010-11-08 109 views
1

这是什么意思?这是什么javascript正则表达式?

name = name. replace(/([A-Z]) /g, " -$1"); 

它是js。

修正我的意思name = name.replace(/([A-Z]) /g, "-$1");

+0

什么语言是这个吗? – FrustratedWithFormsDesigner 2010-11-08 16:00:12

+1

是JavaScript吗?正则表达式的格式可能会有所不同,具体取决于您所使用的编程语言。 – zzzzBov 2010-11-08 16:02:17

回答

2

这意味着:

以字符串“名称”,并查找每个大写字母后面有一个空格。当您发现一个事件时,请用连字符替换它,然后替换为字母。一旦你完成了所有的事件,把这个新的字符串分配回“name”变量。

例如,如果“name”是AB CD之前执行这条线,“名称”,将执行该行之后是A-BCD

+0

我很确定/ g表示它只是在字符串的末尾,不是?我在javascript中测试了这个真正的快速并且:“你好我的朋友”被替换为“你好我的朋友”。 – Gazillion 2010-11-08 16:03:48

+0

@Matt:它查找每个大写字母后跟一个空格,并且空格被删除。 – RoToRa 2010-11-08 16:07:48

+0

Javascript可能无法识别/ g标志。如果它像Perl一样,那么/ g意味着全局。 – 2010-11-08 16:08:02

1

非常简要地说,该装置[A-Z]匹配任何大写字母,则/g位手段做到这一点全局(整个输入字符串),并且-$1位意味着替换每个匹配组与X-X$1引用第一个参数括号中的位。

所以,如果输入是“HE LLO”,你会得到“H-E LLO”。如果输入是“He LL o”,你应该得到“He L-L o”。

我建议你阅读正则表达式,因为它们可能非常复杂。

+0

你是什么意思? $ 1引用第一个参数中的括号中的位。 – steve 2010-11-08 16:08:09

+0

'$ 1'就是所谓的“反向引用”。每对括号定义了一个后向引用,后面可以用'$ n'语法来引用。第一个反向引用是$ 1,第二个是$ 2,等等。所以表达式的“替换”部分指的是正则表达式中的第一个反向引用。 – 2010-11-08 16:11:02

0

(A-Z)之后是空格。所以它只能匹配大写字母后跟一个空格。这些被替换为“ - ”和原始字符(反向引用)。因此,对于字符串“你好我的朋友”,结果将是HELL -OM -YFriends/g意味着全球,所以更换所有的出现。

试图在perl的:

$var = "HELLO MY Friends"; 
$var =´ s/([A-Z])/-$1/g; 
print $var . "\n";