簡體   English   中英

檢查字符串是否在 PHP 中包含兩個單詞或帶有下划線的特殊字符

[英]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]允許the不是單詞。 [(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM