4

试图将“表 2”或任何可能的表编号(有时是 2 位)放入变量中。知道为什么这会回来null吗?

 var productText = '25-08-12 Boat Cruise (Table 2)';
 var rgx = /^\(\)$/;
 var newText = productText.match(rgx);
 alert(newText);
4

3 回答 3

7

请改用以下内容:

var rgx = /\(([^)]+)\)/;
var match = productText.match(rgx);
var newText = match && match[1];
// newText's value will be "Table 2" if there is match; null otherwise

当你有 时/^\(\)$/,你实际上是在尝试匹配字符串"()",不多也不少。相反,您应该匹配文本中的任何位置 a (,将它与下一个之间的所有内容存储)在一个捕获组([^)]+)中,以便您以后可以使用 来引用捕获的组match[1]

如果您只想要数字,请使用/\(Table (\d+)\)/.

于 2012-09-22T23:45:16.427 回答
0
var rgx = /\((.*)\)/

将捕获表号成一个组。

您的正则表达式目前说

'give me () 开头 (^) 和字符串结尾 ($)'。

于 2012-09-22T23:52:30.850 回答
0

^ 表示行开始,并且

$ 表示行尾。

此外,您需要一些内容来匹配 中的文本(),例如:.*

指出这一点后,/^\(\)$/只会匹配到()

然后,一个工作示例可能是:

var productText = '25-08-12 Boat Cruise (Table 2)';
var rgx = /\(.*\)/;
var newText = productText.match(rgx)[0];
newText = newText.replace('(','');
newText = newText.replace(')','');
alert(newText);

看到你需要的东西后,我会推荐使用jQuery 的数据

于 2012-09-23T00:20:05.130 回答