试图将“表 2”或任何可能的表编号(有时是 2 位)放入变量中。知道为什么这会回来null
吗?
var productText = '25-08-12 Boat Cruise (Table 2)';
var rgx = /^\(\)$/;
var newText = productText.match(rgx);
alert(newText);
试图将“表 2”或任何可能的表编号(有时是 2 位)放入变量中。知道为什么这会回来null
吗?
var productText = '25-08-12 Boat Cruise (Table 2)';
var rgx = /^\(\)$/;
var newText = productText.match(rgx);
alert(newText);
请改用以下内容:
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+)\)/
.
var rgx = /\((.*)\)/
将捕获表号成一个组。
您的正则表达式目前说
'give me () 开头 (^) 和字符串结尾 ($)'。
^ 表示行开始,并且
$ 表示行尾。
此外,您需要一些内容来匹配 中的文本()
,例如:.*
指出这一点后,/^\(\)$/
只会匹配到()
。
然后,一个工作示例可能是:
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 的数据。