我有一个用于检查工作表名称的应用程序脚本代码。在我的项目中有两种类型的表格名称——(i(只有字母表(例如master(和(ii(字母表和数字在一起(PHY4125(。该代码将检查第2个选项。我的IF条件经常不起作用!有其他方法可以完成同样的任务吗?
我的代码:
function autoConvert(e) {
var ss=e.source;
var sh=ss.getActiveSheet();
var key=sh.getName();
var lastRow=sh.getLastRow();
**if (key.indexOf("0")>-1 || key.indexOf("1")>-1 || key.indexOf("2")>-1 || key.indexOf("3")>-1 || key.indexOf("4")>-1
|| key.indexOf("5")>-1 || key.indexOf("6")>-1 || key.indexOf("7")>-1 || key.indexOf("8")>-1 || key.indexOf("9")>-1){**
//Body of the code block
}
}
说明:
正则表达式:
/^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+$/
将检查字符串key
是否同时包含字母和数字。
因此这个表达式:
if(key.match(/^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+$/))
对于AB23423
、ab23423
、23233ab
或24443AB
或任何组合As23Abc
等情况,将评估为true
。
解决方案:
function autoConvert(e) {
var ss=e.source;
var sh=ss.getActiveSheet();
var key=sh.getName();
var lastRow=sh.getLastRow();
if(key.match(/^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+$/)){
//Body of the code block
}
}