[英]Check if string contains two word or special character with underscore between in PHP
我需要檢查字符串是否包含兩個單詞中的下划線,也可以是特殊字符:
我正在做的是:
preg_match('/^[a-z]+_[a-z]+$/i', $value)
案例工作:
mytext_second
案例無效:
sometext_%
我一直在關注這個問題,但對我沒有用: 檢查字符串是否在 PHP 中包含下划線
誰能幫我嗎?
謝謝!
您需要在字符類中添加“特殊字符”。 您目前只允許字符az
(和AZ
因為i
修飾符)。
要允許%
,它將是:
preg_match('/^[a-z%]+_[a-z%]+$/i', $value)
您可以在此處閱讀有關字符類的更多信息, https://www.regular-expressions.info/charclass.html 。 需要注意的兩個字符是]
和-
在其中。 這些字符應該轉義為文字( -
創建范圍,而]
將關閉字符類)。
您可以將任何單個字符添加到字符 class。 您不能對字符 class 中的字符進行分組,例如[the]
允許t
、 h
或e
不是單詞。 [(the)]
也不允許這個詞,它也會允許()
s。
如果“特殊字符”是打印 ascii 字符,您可以這樣做:
preg_match('/^[!-~]+_[!-~]+$/', $value);
或者
preg_match('/^[[:print:]]+_[[:print:]]+$/', $value);
在字符 class 中包含您希望允許的所有字符,而不僅僅是字母。 您可以使用
^([a-z%]+)_(?1)$
查看演示
^
- 開始字符串 ancor。(
- 第一個捕獲組。
[az%]+
- 至少匹配定義字符 class 中的一個字符。)
- 關閉第一個捕獲組。_
- 匹配文字下划線。(?1)
- 遞歸第一個子模式。$
- 結束字符串 ancor。您需要在正則表達式中添加特殊字符,例如:
$value = 'mytext_%';
preg_match('/^[a-z$&+,:;=?@#|\'<>.^*()%!-]+_[a-z$&+,:;=?@#|\'<>.^*()%!-]+$/i', $value);
你可以試試下面的代碼
$str = 'sometext_%demo';
if (preg_match('/^[a-z]+[_!@#$%^&*(),.?":{}|<>][a-z]+$/i', $str)) {
// contains an underscore or with special character
} else {
// does not contain underscore or with special character
}
對於sometext_%demo
示例,這將返回true
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.