"snippet": "\\href{${1:${CLIPBOARD}}}{${TM_SELECTED_TEXT}}$0
CLIPBOARD
当您触发代码段时,将打印并选择内容。你会失去url
提示,但我认为没有办法保存它。
您的第二个问题:“有没有办法检查剪贴板是否是有效的网络或电子邮件地址,然后才插入?”
我相信是这样:
${1:${CLIPBOARD/(..your regex test for email validity here..)/$1/}}
编辑(检查有效的电子邮件) - 测试:
"snippet": "\\href{${1:${CLIPBOARD/([A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,})?(.*)/$1/i}}}{${TM_SELECTED_TEXT}}$0"
我从www.regular-expressions.info收到了电子邮件正则表达式。
这似乎有效。关键是,如果你不匹配片段转换,在这种情况下 CLIPBOARD 变量内容,不匹配的内容将通过并被打印。换句话说,如果您不捕获它,它将通过,因此防止错误的电子邮件或 url 通过并被打印的唯一方法是同时捕获一个好的电子邮件/url和错误的版本,并且只打印好的捕获组。
所以这是基本形式:(regex email check here)?(.*)
因此 group1 具有有效的电子邮件(如果有),而 group2 具有剪贴板内容(如果它不是有效的电子邮件)。并且只打印 group1 。整洁的。似乎工作。
编辑2(检查有效的网址) - 伪代码:
"snippet": "\\href{${1:${CLIPBOARD/(...url regex checker here...)?(.*)/$1/}}}{${TM_SELECTED_TEXT}}$0"
所以我只是添加?(.*)
到 url 正则表达式检查的末尾。
编辑 2.5
这是一个基于更新片段中使用的URL检查器:
"snippet": "\\href{${1:${CLIPBOARD/^((https?:\\/\\/)?([w]{3}\\.)+[a-z0-9-]{3,}\\.[a-z]{2,}(\\.[a-z]{2,})?)?(.*)$/$1${5:+bad url}/i}}}{${TM_SELECTED_TEXT}}$0"
注意:验证 url 的正则表达式非常棘手 - 如果不是不可能的话 - 我使用了问题中的那个,并且不保证它的完整性。至少您可以看到如何escape
使用正则表达式。
编辑 3 电子邮件/网址(如果在变量中有错误电子邮件/网址时需要一些文本,在本例中为 $CLIPBOARD,但可以是任何变量):
将此条件 $1${2:+bad email}
添加到片段转换的替换部分,因此对于电子邮件版本:
"snippet": "\\href{${1:${CLIPBOARD/([A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,})?(.*)/$1${2:+bad email}/i}}}{${TM_SELECTED_TEXT}}$0" // email validater
任何你想要的文字bad email
。请注意,检查组 2 中是否有非空内容,如果有,则打印“错误电子邮件”。您的正则表达式可能正在使用不同的组来捕获“不良电子邮件/网址” - 在条件中使用该组${2:+bad email}
。